你的位置:首页 > 网页设计

[网页设计]IE6/7/8如何兼容CSS3属性


最近在工作中总是要求IE8兼容CSS3属性,在网上搜了搜主要是引入了一个htc文件(ie-css3.htc或者PIE.htc。个人认为这两个文件的作用差不多,具体差异值得探讨)

下载地址:https://github.com/Jesse121/HTML5-CSS3/tree/master/CSS3

支持的主要CSS3属性:

1.border-radius圆角

CSS代码如下:
        .pie_radius{
            width:250px;height:250px;
            background-color:#34538b;
            -moz-border-radius:10px;      
            -webkit-border-radius:10px;
            border-radius:10px;
            behavior:url(pie.htc);
       }
2.box-shadow 盒阴影
CSS代码如下:
    .pie_box_shadow{
         width:250px;
         height:250px;
         background-color:#34538b;
         -moz-box-shadow:1px 3px 3px #666;
         -webkit-box-shadow:1px 3px 3px #666;
         box-shadow:1px 3px 3px #666;
         behavior:url(pie.htc);
    }
3.gradient渐变
CSS代码如下:
    .pie_gradient{
        width:250px;
        height:250px;
        background-color:#9F9;
        background:-webkit-gradient(linear, 0 0, 0 bottom, from(#9F9), to(#393));
        background:-moz-linear-gradient(#9F9, #393);     
        background:linear-gradient(#9F9, #393);
        behavior:url(pie.htc);
    }
使用过程中问题说明:
    a.IE下这些CSS3效果实现是借助于VML,由VML绘制圆角或是投影效果的容器元素,然后这个容器元素作为目标元素的后兄弟节点插入,如果目标元素position:absolute 或是 position:relative,则这个css3-container元素将会设置与之一样的z-index值,在DOM tree中,同级的元素总是后面的覆盖前面的,所以这样就实现了覆盖,又避免了可能有其他元素正好插入其中。所以,问题来了,如果目前元素的position属性为static,也就是默认属性,则z-index属性是没有用的,无覆盖可言,所以此时IE浏览器下CSS3的渲染是不会成功的。
    要解决也很简单,设置目标元素position:relative或是设置祖先元素position:relative并赋予一个z-index值(不可为-1)。
    b.IE浏览器的behavior 属性是相对于HTML文档而言的,与CSS其他的属性不一样,不是相对于CSS文档而言的。这使得使用pie.htc文件不怎么方变。如果绝对路径于根目录,则CSS文件不方便移动;如果相对路径与HTML文档,则pie.htc文件在不同HTML页面见的重用性大大降低。同时,诸如border-image后面的URL属性路径也不好处理。 
    c.使用PIE实现IE下的CSS3渲染(其他方法也是一样),只能使用缩写的形式,例如圆角效果,我们可以设置border-top-left-radius表示左上圆角,但是PIE确实不支持这种写法的,只能是老老实实的缩写。
    d. 要想让IE浏览器支持htc文件,需要一个有着”text/x-component” 字样的content-type 头部,否则,会忽视behavior。绝大数web服务器提供了正确的content-type,但是还有一部分则有问题。
    e.由于某种原因,您无法修改服务器配置(例如公用主机,或是空间服务商提供的服务器),您可以用一个PHP文件来间接调用htc文件。
            <?php  header( 'Content-type: text/x-component' );  include( 'pie.htc' );  ?>
     通过PHP文件来增加一个含有“text/x-component”字样的Content-type头,同时调用pie.htc文件。需要将pie.php和pie.htc放在同一个文件夹目录下,同时CSS中的behavior写法应该是:behavior: url(pie.php);
详情请参考:
http://blog.sina.com.cn/s/blog_65c2ec5e0101crvo.html
            http://www.zhangxinxu.com/wordpress/2010/04/%E8%AE%A9ie6ie7ie8%E6%B5%8F%E8%A7%88%E5%99%A8%E6%94%AF%E6%8C%81css3%E5%B1%9E%E6%80%A7/





越南自助游攻略2015怎样去越南旅游特价越南游深圳到越南旅游报价到越南旅游要多少钱雁苍山漂流门票2015-5-7月宁海雁苍山漂流门票价格 山东章丘三王峪怎么样?章丘三王峪旅游景点有哪些? 济南章丘三王峪好玩吗?章丘三王峪图片介绍? 雁苍山漂流几点开漂?宁海雁苍山漂流全天都可以玩吗? 泰国金沙岛上有什么美食? 泰国曼谷有地铁吗? 迪拜有哪些旅游景点? 泰国普吉岛和芭提雅好玩吗?环境好不好? 黄山杨家寨五一有什么好玩的?黄山杨家寨佘河溪河漂流怎么样? 2015宁陕汶水河漂流多少钱?汶水河漂流票价? 汶水河峡谷漂流多少钱?秦岭汶水河峡谷漂流要门票吗? 秦岭峡谷漂流团购价格?秦岭汶水河峡谷漂流门票团购优惠吗? 广州塔蜡像馆五一有什么活动?广州塔世界名人蜡像馆五一门票优惠吗? 桂林到神龙水世界在哪坐车?桂林到神龙水世界有直达车吗? 桂林汽车站到神龙水世界有直达车吗?桂林汽车站到神龙水世界坐几路车? 桂林火车站到神龙水世界怎么坐车?桂林火车站到神龙水世界有专车吗? 06035J3R9ABTTR Datasheet 06035J3R9ABTTR Datasheet 1812AA122JATMQ Datasheet 1812AA122JATMQ Datasheet 06035J3R9BAWTR Datasheet 06035J3R9BAWTR Datasheet 长沙野生动物园 长沙野生动物园 长沙野生动物园 重庆加勒比海水世界门票 重庆加勒比海水世界门票 重庆加勒比海水世界门票 鸟巢开放时间 鸟巢开放时间 鸟巢开放时间