zoukankan      html  css  js  c++  java
  • 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{
                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{
             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{
            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/
  • 相关阅读:
    【网页前端】JS呈现时间戳为与当前时间比较结果
    【Django工具】Django_debug_toolbar使用
    【Django Models】Django数据查询 汇聚
    【Django Models】虚拟化提取Models公共的功能
    【网页在线编辑】图文发送的模式
    【Django后台数据管理】后台数据新建或者保存,经常遇到提示This field is required
    【BBS】Discuz部署
    【Django】QuerySet的分页和排序
    【Django数据库】如何将一个表自定义的key列还原成id列作为key
    18.6
  • 原文地址:https://www.cnblogs.com/jesse131/p/4770313.html
Copyright © 2011-2022 走看看