1、PIE之简述php
在国外,CSS3的盛行与普及,探讨与研究要比国内领先不知多少个身位。相比之下,国内彷佛如一潭死水,为什么?我以为国内领先的前端团队应该经过自身的影响力,带动国内整个前端领域与时俱进。然而,能够理解,咱们都是要养家糊口或是谈情说爱的,咱们不都是圣人,有着以天下兴亡为己任的责任心与使命感,因此呢,要么等着别人喂,要么闭门造车。这,不说也罢。css
PIE方法的使用与平时咱们使用CSS3属性同样,基本上没有什么特殊的样式名称,只要连接pie.htc文件便可。html
border-radius圆角
关于CSS3 border-radius的基本属性,您能够参见这里。前端
CSS代码以下:css3
.pie_radius{ width:360px; height:200px; background-color:#34538b; -moz-border-radius:8px; -webkit-border-radius:8px; border-radius:8px; position:relative; behavior:url(pie.htc); }
相应的html代码以下:web
<div class="pie_radius"></div>
box-shadow 盒阴影浏览器
CSS代码以下:安全
.pie_box_shadow{ width:360px; height:200px; background-color:#34538b; -moz-box-shadow:1px 3px 3px #666; -webkit-box-shadow:1px 3px 3px #666; box-shadow:1px 3px 3px #666; position:relative; behavior:url(pie.htc); }
相应的HTML代码以下:服务器
<div class="pie_box_shadow"></div>
gradient渐变
关于CSS3的渐变属性,我在“CSS渐变之CSS3 gradient在Firefox3.6下的使用 ”、“CSS gradient渐变之webkit核心浏览器下的使用 ”、“CSS实现兼容性的渐变背景(gradient)效果”中作了至关详细的介绍,您有兴趣能够去看看。url
若是使用PIE实现IE饿渐变背景,该如何呢?须要用到一个自定义的CSS属性,-pie-background,后面的写法与火狐浏览器相似。CSS部分代码以下:
.pie_gradient{ width:360px; height:200px; background-color:#9F9; background:-webkit-gradient(linear, 0 0, 0 bottom, from(#9F9), to(#393)); background:-moz-linear-gradient(#9F9, #393); -pie-background:linear-gradient(#9F9, #393); position:relative; behavior:url(pie.htc); }
相应的html代码以下:
<div class="pie_gradient"></div>
multiple background images多背景
此CSS3属性接触较少,还没有详细研究过,此处略!
4、已知的一些问题
此方法并非万能的,也有一些局限性和须要注意的地方。
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,可是还有一部分则有问题。例如的个人空间域名商就没有”text/x-component” 字样的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和pie.htc放在同一个文件夹目录下,同时CSS中的behavior写法应该是:
behavior: url(pie.php);
以上为一些常见的主要的问题,固然,在复杂的页面状况下,还会有其余意想不到的状况,这里,我只能祝您好运了!