IE兼容CSS3圆角border-radius的方法(同时兼容box-shadow,text-shadow)
IE兼容CSS3圆角border-radius,box-shadow,text-shadow的方法
1.下载ie-css3.htc
2.CSS
box {
-moz-border-radius: 15px; /* Firefox */
-webkit-border-radius: 15px; /* Safari 和 Chrome */
border-radius: 15px; /* Opera 10.5+, 以及使用了IE-CSS3的IE浏览器 */
-moz-box-shadow: 10px 10px 20px #000; /* Firefox */
-webkit-box-shadow: 10px 10px 20px #000; /* Safari 和 Chrome */
box-shadow: 10px 10px 20px #000; /* Opera 10.5+, 以及使用了IE-CSS3的IE浏览器 */
behavior: url(ie-css3.htc); /* 通知IE浏览器调用脚本作用于'box'类 */
}3.问题:
一、只能同时4角圆角,不能单独设置;
二、div上可以正常使用,测试text文本框,会出现异常;
三、CSS文件要和页面在同一目录下,否则无效
四、当前元素一定要有定位属性,像是position:relative或是position:absolute属性。
五、z-index值一定要比周围元素的要高,否则……只能说抱歉了~~
4.支持的样式及状态说明
参见下表:
| border-radius | 为元素四个角设置圆角属性 元素边框 | 只设置一个角落的圆角属性 |
| box-shadow | 模糊大小参数 偏移值 | 不支持除了黑色(#000)以外的其他颜色 |
| text-shadow | 模糊大小参数 偏移值 颜色值 | IE下的表现与Firefox/Safari/Chrome有一点点的差异,原因不详 |
标签: css3
在这时碰到了一个圆角边框的问题,以前的代码是在每个页面写一个固定结构的div,使用背景图片来实现圆角边框。代码结构大致如下:
.top_border{background:url(topborder.png);}
.left_border{background:url(leftborder.png);}
.right_border{background:url(rightborder.png);}
.bottom_border{background:url(bottomborder.png);}<div>
<div class="top_border"></div>
<div class="left_border"></div>
<div class="content">
...
</div>
<div class="right_border"></div>
<div class="bottom_border"></div>
<div>在重构时,我直接把这个结构修改为最简化的版本
<div class="content"></div>
这里就有点问题:使用boder-radius可以实现圆角边框,但是不支持IE7 、IE8。
当时我认为,我的这个规范是正确的,所以希望通过不修改HTML的代码结构来完成对IE7/IE8的兼容。
搜索了一下IE7/IE8的解决方案:http://www.cnblogs.com/binyong/archive/2009/11/30/1613376.html
就以此为基础,使用js来对IE7/IE8进行兼容。主要代码逻辑如下:
if( typeof (document.documentElement.style["border-radius"]) == "string")//判断是否支持
{
$.fn.extend({//实现圆角
borderRadius : function (r)
{
var b = this.wrap("<div></div>").parent();
//以下代码 主要以逻辑为主 并非真实执行代码 ,为四角 border-radius = 5的实现
//调整margin 及 宽度 以符合旧div的布局
b.css( {margin : this.css("margin") , "width ": this.clientWidth});
this.css({margin:"0"});
var borderColor = this.css("border-color");
var background = this.css("background-color");
var borderStyle = this.css("borer-style");
//重设边框,只保留两侧边框
this.css({"border-top-width":"0","border-bottom-width":"0"});//
//创建HTML结构,实现上下边框
var setting = { m: [1,2,3,5],bw : [1,1,2,0] };
var i = 0;
for(; i < 3; i++)
{
var t = $("<b><b>").css({"height": 1 , "margin" : "0 " + setting.m[i] + "px",
"border-left-width" : setting.bw[i] +"px","border-right-width" : setting.bw[i] +"px",
"border-color":borderColor,"background-color":background});
b.append(t);
b.prepend(t.clone(true));
}
var t = $("<b><b>").css({"height": 1 , "margin" : "0 " + setting.m[i] + "px",
"border-width" : "0",
background-color":borderColor});
b.append(t);
b.prepend(t.clone(true));
}
});
$(".content").borderRadius(5);//设置圆角
$(".border1").borderRadius(5);
}虽然运行时的HTML结构变化了,但是编码时的HTML结构没有变化,也算是一种兼容方式吧。
相关推荐
云端漂移 2020-07-06
MaureenChen 2020-02-17
bertzhang 2020-01-31
impress 2020-01-11
MaureenChen 2020-01-10
impress 2019-12-31
zhanghao 2019-12-20
zengni 2019-12-18
zhanghao 2019-12-12
didianmanong 2019-11-17
impress 2019-11-05
MaureenChen 2019-11-03
echoes 2019-11-03
zhangruiweb 2019-11-01
绿豆饼 2019-10-20
Phoebe的学习天地 2015-11-12
王景迁 2019-09-07
