让ie6/ie7/ie8支持css3属性的8种方法介绍

梁大师      2022-02-08     542

关键词:

我们都知道,IE浏览器暂不支持CSS3的一些属性。国外的工程师们,不安于此现状,他们总是尽量使用一些手段使IE浏览器也能支持CSS3属性,我觉得这些都是很有意义,很有价值的工作,可以推动整个技术领域的进步的。到目前为止,有不少可以让IE支持部分CSS3属性的工具。例如: 

1. Dean Edwards的IE7.js (以及 IE8.js, IE9.js) 

这个玩意估计是试图让IE支持CSS3属性的鼻祖,还算蛮强大,就是性能开销较大,要解析很多文件脚本,给DOM添加大量的元素以及ClassName。 

2. Aaron Gustafson的 eCSStender 

此方法支持@font-face, CSS3 选择器, 以及 CSS3 Backgrounds 和 Borders。 

3. Drew Diller的 DD_roundies 

这是一个基于IE VML实现一些CSS3效果的。 

4. Remiz Rahnas的border-radius.htc 

此方法使用htc文件,配合VML实现,缺点在于不能自动适应目标元素的位置和大小,所以不能适用于动态脚本环境。 

5. Nick Fetchak的 ie-css3.htc 

关于此方法,我在前面的"让IE6/IE7/IE8浏览器支持CSS3属性"这篇文章中已经做过介绍。我是建议您看看这篇文章,倒不是ie-css3.htc这个玩意多么好,而是文中对htc文件以及VML预言做了些介绍,对于您了解IE下实现类似CSS3效果原理有所了解。 

6. Keith Clark的ie-css3.js 

这是个与IE7.js类似的项目,其选择器可借助其他JavaScript库,所以其本身较小。 

7. zoltandulac的cssSandpaper 

这是一个使用IE滤镜实现一些CSS3属性的方法。 

8. css3pie的css3 PIE.htc 

支持:border-radius圆角 、 box-shadow 盒阴影 、 gradient渐变 、 multiple background images多背景 。 

下面对第8第方法的做一下简单介绍: 

官方网站:http://css3pie.com/ 

使用方法: 

第一步:下载css3 PIE.htc 文件 

第二步:将PIE.htc文件上传到你的网站目录中,上传到目录哪里都可以,只要你记住这个目录。 

第三步:创建html文件,写一段css3代码,并引入PIE.htc,如下面这段: 

 

#id { 
border: 1px solid #999; 
-webkit-border-radius: 10px; 
-moz-border-radius: 10px; 
border-radius: 10px; 
behavior: url(path/to/PIE.htc); 


注意:.htc 文件路径是相对于html文件的路径,而不是相对于css文件。 

已知的一些问题: 

此方法并不是万能的,也有一些局限性和需要注意的地方。 

1. z-index相关问题 

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)。 

2. 相当路径的问题 

IE浏览器的behavior 属性是相对于HTML文档而言的,与CSS其他的属性不一样,不是相对于CSS文档而言的。这使得使用pie.htc文件不怎么方便。如果绝对路径于根目录,则CSS文件不方便移动;如果相对路径与HTML文档,则pie.htc文件在不同HTML页面见的重用性大大降低。同时,诸如border-image后面的URL属性路径也不好处理。 

3. 缩写的问题 

使用PIE实现IE下的CSS3渲染(其他方法也是一样),只能使用缩写的形式,例如圆角效果,我们可以设置border-top-left-radius表示左上圆角,但是PIE确实不支持这种写法的,只能是老老实实的缩写。 

4. 提供正确的Content-Type 

要想让IE浏览器支持htc文件,需要一个有着"text/x-component" 字样的content-type 头部,否则,会忽视behavior。绝大数web服务器提供了正确的content-type,但是还有一部分则有问题。 

如果您发现在您的机子上PIE方法无效,也就是htc文件这里指pie.htc文件无效,检查您的服务器配置,可能其需要更新到最新的content-type。例如对于Apache,您可以在.htaccess文件中做如下处理: 

 

AddType text/x-component .htc 


但是,由于某种原因,您无法修改服务器配置(例如公用主机,或是空间服务商提供的服务器),您可以用一个PHP文件来间接调用htc文件。我只要给你看下这个PHP文件的代码您就知道什么意思了,如下: 

 

<?php 
header( ‘Content-type: text/x-component‘ ); 
include( ‘pie.htc‘ ); 
?> 


通过PHP文件来增加一个含有"text/x-component"字样的Content-type头,同时调用pie.htc文件。 

关于上面所示的php文件,您可以狠狠地点击这里:pie.php(右键 – [目标|链接另存为]),或者您可以直接新建一个php文件,把上面的两行代码复制进去。或者在本文提供的原始打包资源的wrappers文件夹里面也有此php文件,不过名称是大写的。 

如果您使用上述php文件,您需要将pie.php和pie.htc放在同一个文件夹目录下,同时CSS中的behavior写法应该是: 

 

behavior: url(pie.php); 


转自:http://www.jb51.net/css/106039.html

 


































































































让ie6ie7ie8ie9ie10ie11支持bootstrap的解决方法

如有雷同,不胜荣幸,若转载,请注明让IE6IE7IE8IE9IE10IE11支持Bootstrap的解决方法最近做一个Web网站,之前一直觉得bootstrap非常好,这次使用了bootstrap3,在chrome,firefox,safari,opera,360浏览器(极速模式)、搜狗浏览器等浏览器下均没... 查看详情

转载------让ie6ie7ie8ie9ie10ie11支持bootstrap的解决方法

本文是转载及收藏让IE6IE7IE8IE9IE10IE11支持Bootstrap的解决方法最近做一个Web网站,之前一直觉得bootstrap非常好,这次使用了bootstrap3,在chrome,firefox,safari,opera,360浏览器(极速模式)、搜狗浏览器等浏览器下均没有问题,而在IE8及IE11... 查看详情

完美解决ie(ie6/ie7/ie8)不兼容html5标签的方法

...ricornus/archive/2013/03/26/2982122.html HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单。HTML5的新标签元素有:<header>定义页面或区段... 查看详情

解决header,footer等html5标签在ie(ie6/ie7/ie8)无效的方法

HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单。HTML5的新标签元素有:<header>定义页面或区段的头部;<footer>定义页面或区段... 查看详情

css另一种清除浮动元素的方法(ff,ie6,ie7,ie8beta)(代码片段)

查看详情

html5shiv完美解决ie(ie6/ie7/ie8)不兼容html5标签的方法

HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单。 HTML5的新标签元素有: <header>定义页面或区段的头部; <footer>定... 查看详情

html5shiv--解决ie(ie6/ie7/ie8)不兼容html5标签的方法

HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面布局。大多数浏览器基本兼容html5,但目前来说ie6/ie7/ie8还不兼容html5标签,所以需要javascript处理,让其进行兼容方法一:javascriptcode<!--[ifltIE9]><script&... 查看详情

ie兼容方法

 其实我也觉得非常麻烦,开始的时候都用_XXX:XXX;/*IE6支持*/*XXX:XXX;/*IE6、IE7支持*/*+XXX:XXX;/*IE7支持*/XXX:XXX9;/*IE6、IE7、IE8支持*/XXX:XXX 查看详情

css完美兼容ie6/ie7/ie8/ie9/ie10的通用方法

...},关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!:)3、ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义ul{margin:0;padding:0;}就能解决大部... 查看详情

支持ie6ie7ie8等低端浏览器的简化版vue(代码片段)

最近研究Vue的底层原理,写了一个简化版的Vue,可以在支持IE6、IE7、IE8等低端浏览器运行。由于低端浏览器不支持对象属性定义,所以设置属性不支持直接赋值,需要调用虚拟机实例的set方法。目前只实现了基础的方法,后续继... 查看详情

js代码判断ie6,ie7,ie8,ie9!

JS代码判断IE6,IE7,IE8,IE9!2011年12月15日星期四14:01做网页有时候会用到JS检测IE的版本,下面是检测MicrosoftInternetExplorer版本的三种代码!有一种代码:<scripttype="text/javascript">varbrowser=navigator.appNamevarb_version=navigator.appVersio 查看详情

javascript关闭ie6,ie7,ie8和firefox没有确认框?

...(即,因为浏览网页,后退按钮可以点击)。Firefox中的方法:首先删除历史记录。然后你可以关闭窗口没 查看详情

浏览器的差距ie6ie7ie8符号htmlcssbfc

...hack:就是针对不同的浏览器去不同的html,css样式,从而让各个浏览器能达到一致的渲染效果  html的hack:写在html的标签中  css的hack:写在css的样式中3、符号  &it;<  &ite;<=  &gt;>   查看详情

ie样式属性前后缀兼容写法略统计

总结IE兼容写法:9:IE6IE7IE8*:IE6IE7_:IE6*+:IE7----------------------------------书写位置:background-color:#FF00009;  /*IE6、IE7、IE8会显示红色*/*background-color:#0066FF;  /*IE6、IE7会变为蓝色*/_backgro 查看详情

ie6/ie7/ie8兼容h5标签

可以使用html5shiv(html5shiv主要解决HTML5提出的新元素不被IE6-8识别,这些新元素不能作为父节点包裹子元素,并且不能应用CSS样式)来解决<!--[ifltIE9]><scriptsrc="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-- 查看详情

如何在ie6/ie7/ie8中实现iframe背景透明

...性的默认值为‘‘‘‘transparent‘‘‘‘,即透明;但是IE6/IE7/IE8中BODY元素的背景色不是transparent,而是#FFFFFF;也就是变成了白色的。其实,有一点我们 查看详情

目标ie6,ie7,ie8

...s,ofcourse*/color:green9;/*IE8andbelow*/*color:yellow;/*IE7andbelow*/ IE6 bodycolor:red;/*allbrowsers,ofcourse*/color:green9;/*IE8andbelow*/*color:yellow;/*IE7andbelow*/_color:orange;/*IE6*/ 查看详情

css目标ie6,ie7,ie8(代码片段)

查看详情