使用PIE对IE进行CSS3兼容介绍及渲染

IE10 以下版本的浏览器进行部分 CSS3 兼容
 
主角:PIE.js , PIE.htc  两种方法可以实现

官方网站:http://css3pie.com/
 
演示地址:http://css3pie.com/demos/gradient-patterns/

重要功能实现
 
可以使 IE6、7、8 、9 实现类似 chrome 和 firefox
1.  更自然逼真的阴影效果,不再是以前那种丑陋的滤镜效果。
2.  实现很自然的圆角效果
3.  实现部分 CSS3  的强悍效果,如 多背景图,border-image,更强的背景渐变效果。
4.  png 图片透明效果
 
使用方法:
 
1.  .htc 大概是浏览器补丁模式
css中使用behavior 来加载即可自动实现效果,
 

  1. #test { 
  2.     border-radius: 3px; 
  3.     behavior: url(PIE.htc); 
  4.  
  5. #test { 
  6.     border-radius: 3px; 
  7.     behavior: url(PIE.htc); 

注意路径,最好是直接使用 URL 的绝对路径,
 
如果无法显示可能是 服务器端不支持该类型文件格式的解析,可以在服务器配置文件的
 
mime.types文件的末尾增加一行:text/x-component htc,具体方式请自己 百度 下吧
 
方法一的总结,我自己最早使用的也就是这个方法,发现时灵时不灵的,很郁闷了好久,而且每个地方都要写,超级麻烦,最后差点都放弃这个插件了,后来发现了方法二。
 
2.  .js 方式,很灵活,简单
 
下载并解压缩  http://css3pie.com/download-latest
 
使用  PIE.js  文件
 

  1. <script type="text/javascript" src="PIE.js"></script> 
  2. <script type="text/javascript"> 
  3. PIE.attach(document.getElementById("test")); 
  4. </script> 
  5.  
  6. <script type="text/javascript" src="PIE.js"></script>; 
  7. <script type="text/javascript"> 
  8. PIE.attach(document.getElementById("test")); 
  9. </script> 

最好放在 body 的最下面,这样将其包含到 html 页面后既可以使用

问题说明
   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文件。
 

  1. <?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);

  f.直接对执行过PIE兼容的当前容器进行透明度是没有用的,因为JS会新生成一个自定义标签层叠在下面,可以用下面的步骤实现透明
 CSS 添加  

  1. css3-container { filter:alpha(opacity=98); } 

 JS 添加 

  1. $(‘.test’).prev(‘css3-container’).css({‘filter’:’alpha(opacity=98)’, ‘opacity’:0.98}); 
时间: 2024-10-31 14:24:40

使用PIE对IE进行CSS3兼容介绍及渲染的相关文章

使用PIE对IE进行CSS3兼容介绍和经验总结

国外团队开发的兼容插件,去年做项目时才发现,非常强大 主角:PIE.js , PIE.htc 两种方法可以实现 官方网站:http://css3pie.com/ 演示地址:http://css3pie.com/demos/gradient-patterns/ 重要功能实现: 可以使 IE6.7.8 .9 实现类似 chrome 和 firefox 1. 更自然逼真的阴影效果,不再是以前那种丑陋的滤镜效果. 2. 实现很自然的圆角效果 3. 实现部分 CSS3 的强悍效果,如 多背景图,borde

CSS3 pointer-events介绍

其实早知道这个属性,但是一直没有去研究过.今天正好在twitter看到这个词,就去研究了下,正好解决了目前遇到的一个小难题,所以分享下.嗯,其实这是个比较简单的CSS3属性. 在某个项目中,很多元素需要定位在一个地图层上面,这里就要用到很多绝对定位或者相对定位的元素,但是这样的话,这些浮在上面的div或者其它元素一般都会给个宽高,或者relative的元素可以不给宽高,这个时候,这些元素就会盖住下面的地图层,以至于地图层无法操作... 然后正好在Google map见到了类似的问题,拿来当例子来

实例:html5.js 让HTML5+CSS3制作的网站兼容ie6,7,8浏览

今天下载了html5.js插件,然后用html5+css3制作了个简单的网页布局,测试一下这个html5.js插件是否可以兼容ie6,7,8浏览器.做好之后用IETester在IE6.7.8这3个版本测试了一下,的确可行.这样也为以后用html5+css3建设网站提供了可行性. ie678浏览器演示效果 HTML5代码效果图 CSS3效果图 下载:html5+css3兼容ie678浏览器案例

html5+CSS3创建兼容浏览器的range input 对象

随着IE10的发布,我们给range input创建样式的能力已经得到了引人注目提高.用纯CSS实现跨浏览器兼容的range input(sliders)已经成为可能.在这篇教程中,我们用基本的range input作为例子:     然后把它变成:     为了简化生成跨浏览器兼容的样式的过程,我们引进LESS.当然也有CSS版本. 添加基础CSS样式 我们需要给range input添加几个样式来覆盖所有浏览器的默认外观. input[type=range] {   -webkit-appe

webjx收集的帮助你学习和使用CSS3的工具

整理自:List of Really Useful Tools For CSS3 Developers中文:CSS3开发工具收集 通常来说,CSS非常简单.但是当浏览器厂商开始实现CSS3特性,问题开始变得有些复杂了.不难,只是有些复杂.这可能包括两个方面:首先有些心得CSS3属性(比如,transition.渐变.transform等)不是那么简单,其次我们不得不使用浏览器厂商指定扩展. 直到你最喜欢用的IDE原生支持CSS3,你最好的伙伴将是CSS3生成器.手册.参考指南以及基于JS的方案.

CSS3实现动态翻牌效果 仿百度贴吧3D翻牌一次动画特效_经验交流

今天分享一个CSS3制作的翻牌效果,效果如下图所示,所过把把这个效果应用于相册肯定会很炫的.呵呵,超酷啊. 一.HTML代码: 因为是CSS3实现,所以大家可以看到没有任何的JS代码.ul为一组图片,每个li中有个a(因为我们希望点击图片可以跳转),a中包含两个div,一个是正常显示时的(即显示图片),一个是图片旋转后显示的(即介绍). <!doctype html> <html> <head> <meta charset="gb2312"&g

CSS3开发工具收集

整理自:List of Really Useful Tools For CSS3 Developers中文:CSS3开发工具收集 通常来说,CSS非常简单.但是当浏览器厂商开始实现CSS3特性,问题开始变得有些复杂了.不难,只是有些复杂.这可能包括两个方面:首先有些心得CSS3属性(比如,transition.渐变.transform等)不是那么简单,其次我们不得不使用浏览器厂商指定扩展. 直到你最喜欢用的IDE原生支持CSS3,你最好的伙伴将是CSS3生成器.手册.参考指南以及基于JS的方案.

CSS3中的calc()

什么是calc()? calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能; MDN的解释为可以用在任何长度,数值,时间,角度,频率等处; /* property: calc(expression) */ width: calc(100% - 80px); 可以用 + - * / 符号来进行运算; 但需要注意的是 + - 必须用空格隔开; width: calc(100% -8px); /* 这样会出错,结果为0 */ width: calc(100% - 8px);

css3 calc()功能小窥

之前,我们想要实现一个完美的宽度自适应的输入框好麻烦,曾经也被作为对前端技术的一个挑战.类似的常见场景还有100%宽+边框的容器等.遇到这些情况,我们不得不分外小心,因为各个浏览器的表现可能不一致. 现在,firefox和webkit相继支持calc()功能了,我们也可以学习下了. calc()是干嘛的? calc()是单词calculate(计算)的缩写,是css3的一个新的长度单位功能,可以使用简单的数学运算. 嗯,CSS3越来越高级了. 运算规则 calc()使用通用的数学运算规则,但是也