【简介:】htc就是Html Component(HTML零件),出来很长时间了,IE5以上开始支持。可以为一些有共同行为的html组件定义公用的行为,一是代码整洁,二是可以实现代码公用.不过我并没有大面积使用过它.因为这个东西只能被IE支持.
【引言】
IE利用VML矢量可标记语言作为画笔绘出圆角:下载一个压缩包ie-css3.htc,里面有一个微软的脚本文件(11KB)和一个用来测试服务器是否有正确的Content-Type的 HTML文件,.htc 文件是IE内核支持Web行为后用来描述此类行为的脚本文件。它们定义了一套方法和属性,程序员几乎可以把这些方法和属性应用到HTML页面上的任何元素上去
【缺点】
对于兼容IE写法有许多不足之处,.htc文件引入可以解决许多CSS3问题,例如边框阴影。但是无法调整颜色及无法设置内外阴影效果;
还有另外的一种针对IE的写法:
filter: progid(进程id):DXImageTransform(DX图像转变).Microsoft(微软).Shadow(阴影) (color='#969696', Direction=135阴影角度, Strength=5阴影半径);/*for ie6,7,8*/
缺点很明显,就是无法单独设置某边的阴影及无法设置内外阴影效果;
【工作原理:】IE浏览器利用特定的矢量绘图语言的脚本(VML)重建本身不支持的CSS3这些属性(例如阴影和倒角等),说到底这是一种类似JS的脚本,行为的具体内容定义在.htc文件中。由后缀名为.htc的脚本文件描述定义了一套方法和属性,程序员几乎可以把这些方法和属性应用到HTML页面上的任何元素上去
前面我说过.htc(PIE.HTC或者ie-css3.htc)可以解决IE的border-radius边框圆角的兼容问题,这里拓展下其他作用,那么.htc可以使ie支持哪些css3属性
IE 6,7,8支持CSS3的部分属性。而.htc,它可以让IE浏览器支持CSS3的border-radius、box-shadow、border-image、CSS3 Backgrounds (-pie-background)、Gradients、RGBA属性。
提示:PIE.htc URL路径是相对于当前HTML文件,不是CSS文件.
比如 当前文件在“/”下 ,CSS文件在“/CSS”下,PIE.htc在“/CSS”下,behavior: url(/css/PIE.htc) 而不是behavior: url(PIE.htc);
注意的问题: htc 只能在IE浏览器上使用(IE 5.5以上),并且在火狐浏览器不被支持
【来源组成】:在微软(R)Internet Explorer 5中介绍,HTML组件(HTCs)提供一种机制来使用脚本作为动HTML(DHTML)行为实现组件功能。以.htc扩展名保存,一份HTC是一份包含脚本和一组用于定义组件的HTC特殊元素的HTML文件。此部分包含相关元素和它们支持的成员。
【对象】
document 在给定的浏览器窗口中表现HTML文档。
element 返回一份主文档中连接行为的标签的参考。
【方法】
createEventObject
创建一个事件对象,当需要传递事件附加信息给PUBLIC:EVENT元素的fire方法时事件使用。
【事件】
oncontentready
连接了行为的元素的内容完全被解析时发生。
oncontentsave
连接了一份元素行为的一个元素的内容被保存或复制前发生。
ondetach
从一个元素解除一份行为的连接前发生。
ondocumentready
当包含行为的文档完全被解析时发生。
1.下载ie-css3.htc
2.应用:以下为应用
一、border-radius 圆角
.radius{ border: 1px solid #696; padding: 60px 0; text-align: center; width: 200px; -webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px; background: #EEFF99; behavior: url(/PIE.htc); /* 可以让IE 6,7,8模拟部分的CSS3属性 */ }
说明:不支持单边的圆角属性,比如: border-top-left-radius,但是你可以这样来写:
border-radius:上,右下,左。
二、box-shadow 盒子阴影
border: 1px solid #696; padding: 60px 0; text-align: center; width: 200px; -webkit-box-shadow: #666 0px 2px 3px; -moz-box-shadow: #666 0px 2px 3px; box-shadow: #666 0px 2px 3px; background: #EEFF99; behavior: url(/PIE.htc);/* 可以让IE 6,7,8模拟部分的CSS3属性 */
说明:不支持text-shadow(文本阴影)
三、border-image 图片边框
color: white; border: 8px solid #013D7A; -webkit-border-radius: 8px; -moz-border-radius: 8px; -webkit-border-image: url(img/border.png) 8 8 8 8 stretch; -moz-border-image: url(img/border.png) 8 8 8 8 stretch; border-image: url(img/border.png) 8 8 8 8 fill stretch; behavior: url(PIE.htc);
四、CSS3 Backgrounds 背景渐变
.gradient{ background: #CCC; /*fallback for non-CSS3 browsers*/ background: -webkit-gradient(linear, 0 0, 0 100%, from(#CCC) to(#EEE)); /*old webkit*/ background: -webkit-linear-gradient(#CCC, #EEE); /*new webkit*/ background: -moz-linear-gradient(#CCC, #EEE); /*gecko*/ background: -ms-linear-gradient(#CCC, #EEE); /*IE10*/ background: -o-linear-gradient(#CCC, #EEE); /*opera 11.10+*/ background: linear-gradient(#CCC, #EEE); /*future CSS3 browsers*/ -pie-background: linear-gradient(#CCC, #EEE); /*PIE*/ behavior: url(PIE.htc); }
说明:只支持linear-gradient(线性渐变)
高级运用:
background-size: 50px; background-color: #0ae; background-image: -webkit-linear-gradient(rgba(255, 255, 255, .2) 50%, transparent 50%, transparent); background-image: -moz-linear-gradient(rgba(255, 255, 255, .2) 50%, transparent 50%, transparent); background-image: -ms-linear-gradient(rgba(255, 255, 255, .2) 50%, transparent 50%, transparent); background-image: -o-linear-gradient(rgba(255, 255, 255, .2) 50%, transparent 50%, transparent); background-image: linear-gradient(rgba(255, 255, 255, .2) 50%, transparent 50%, transparent); -pie-background: linear-gradient(rgba(255, 255, 255, .2) 50%, transparent 50%, transparent) 0 0 / 50px #0ae; behavior: url(/PIE.htc);
五、RGBA 颜色值
.rgba{ padding: 60px 0; background: #000; background: rgba(0,0,0,.2); -pie-background: rgba(0,0,0,.2); }
说明:不支持box-shadow
六、IE6 png 透明
.png img{ -pie-png-fix: true; behavior: url(/PIE.htc); } .png{ background-image:url(img.png); -pie-background:url(img.png); behavior: url(/PIE.htc); }
说明:图片直接用-pie-png-fix: true,背景图片使用-pie-background来修复IE6下png透明的问题
【已知的一些问题】
此方法并不是万能的,也有一些局限性和需要注意的地方,常见问题:
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)。
有两个简单的解决方法:
①设置更大一些的z-index值
②利用绝对定位position:relative 或 position: absolute
2. 相当路径的问题
IE浏览器的behavior 属性是相对于HTML文档而言的,与CSS其他的属性不一样,不是相对于CSS文档而言的。这使得使用pie.htc文件不怎么方面。如果绝对路径于根目录,则CSS文件不方便移动;如果相对路径与HTML文档,则pie.htc文件在不同HTML页面见的重用性大大降低。同时,诸如border-image后面的URL属性路径也不好处理。
3、布局可能有轻微的变形或浮动。
可能有这几个原因:
可是是你的标签没闭合,至少是包含IE-CSS3元素的标签没闭合
IE6和IE7 bug问题。CSS添加属性 zoom:1 或 position:relative 。或者将margin值用padding值达到同等效果。
4、IE提示脚本错误
常出现在IE6浏览器中,原因是和你添加的别的js冲突了。解决方法:
调整你的js使之兼容。
放弃这个方法,采用背景图片或者IE6-IE8不用这个特效(IE9、火狐和谷歌等才用这个特效)。
5. 缩写的问题
使用PIE实现IE下的CSS3渲染(其他方法也是一样),只能使用缩写的形式,例如圆角效果,我们可以设置border-top-left-radius表示左上圆角,但是PIE确实不支持这种写法的,只能是老老实实的缩写。
6.提供正确的Content-Type
要想让IE浏览器支持htc文件,需要一个有着”text/x-component” 字样的content-type 头部,否则,会忽视behavior。绝大数web服务器提供了正确的content-type,但是还有一部分则有问题。例如的我的空间域名商就没有”text/x-component” 字样的content-type,可能是出于安全的考虑。
如果您发现在您的机子上PIE方法无效,也就是htc文件这里指pie.htc文件无效,检查您的服务器配置,可能其需要更新到最新的content-type。
.
相关推荐
让IE6/IE7/IE8支持CSS3属性的脚本ie-css3.htc,之前刚接触CSDN的时候,曾经分享过一个50积分的,非常抱歉,这个免费的
1.PIE.htc是一个可以解决IE6/7/8无法支持CSS3属性的文件,其利用VML绘制相关的效果。要注意的是它并不能实现所有CSS3效果,其兼容的属性有:box-radius,线性渐变( linear-gradient),rgba,box-shadow,border-image。...
让IE 6,7,8支持CSS3的部分属性。它可以让低版本IE浏览器支持CSS3的border-radius、box-shadow、border-image、CSS3 Backgrounds (-pie-background)、Gradients、RGBA属性。
ie-css3.htc可以让IE浏览器(ie6\7\8)支持部分CSS3属性,包括圆角、box-shadow等
使IE6、7、8、9能够使用css3的阴影和圆角属性,具体使用方法可见https://blog.csdn.net/weixin_42516949/article/details/103164361
ie各个版本浏览器兼容圆角样式属性:border-radius,具体使用方法可参考:https://blog.csdn.net/Bibabu135766/article/details/79522496
通过引入htc文件,使ie可以支持css3的属性
国外的工程师们,不安于此现状,他们总是尽量使用一些手段使IE浏览器也能支持CSS3属性,我觉得这些都是很有意义,很有价值的工作,可以推动整个技术领域的进步的。到目前为止,有不少可以让IE支持部分CSS3属性的工具...
pie.js以及pie.htc支持在ie8浏览器支持css3的border-redius属性
使用pie.htc可使IE6/7/8兼容部分CSS3属性,实际上是利用VML进行实现
今天要给大家介绍的这个htc,它可以让IE浏览器支持CSS3的border-radius、box-shadow、border-image、CSS3 Backgrounds (-pie-background)、Gradients、RGBA属性。不相信?你可以在IE浏览器中打开我的博客看下效果。...
IE6/7并不支持CSS3的属性,IE8也不能很好的支持CSS3。如何让IE 6/7/8支持border-radius (rounded),box-shadow ( shadow),text-shadow等这些属性呢?这里介绍一个通过htc脚本实现这些属性的方法
让 IE6, 7和 8支持CSS3 IE6,7并不支持CSS3的属性,IE8也不能很好的支持CSS3。但是有一个小脚本能够做到,它可以让IE支持CSS3,包括:border-radius (rounded), box-shadow ( shadow), text-shadow等…… 如果你...
我们都知道,IE 6,7不支持新增加的CSS3属性,甚至与IE8是CSS3还没有完全准备好。你知道吗,今天给大家分享一个脚本工具,可以帮助您启用CSS3的支持IE浏览器(IE6)与新的CSS3属性,包括:border-radius属性,box-...
CSS3的很多新属性在IE9及以前的版本中都没法实现,而CSS3pie正好可以解决这个问题,只需要在CSS代码中引入如下代码即可: behavior: url(path/to/pie_files/PIE.htc);...这样IE9及以前的版本就能支持CSS3的属性了。
让IE6支持HOVER的HTC,让IE6 支持CSS2的属性
IE系列浏览器不支持CSS的圆角(border-radius)等CSS3属性是一个众所周知的问题,而FF、Chrome原生的浏览器支持是的优雅的圆角感觉较好,如何解决这个问题呢? 一种比较传统的方案是放弃CSS3,使用背景图,但是这种...
下载一个压缩包ie-css3.htc,里面有一个微软的脚本文件(11KB)和一个用来测试服务器是否有正确的Content-Type的HTML文件,.htc 文件是IE内核支持Web行为后用来描述此类行为的脚本文件。它们定义了一套方法和属性,...
3,demo-htc通过iepngfix.htc文件实现透明度,同时通过修改html结构得到想要的结果,但存在文档内容顺序的问题。 4,最后,demo-DD,此方法完美解决,不过需要在设置png背景的div上添加class=“png”的类。
今天刚把IE7卸了装了IE6,一般的,由于CSS驱动的下拉菜单不能在IE6中正常工作,大多数人会选择用JavaScript去实现下拉菜单,但其实CSS也可以做到的哦~~ 这个关键就是这个语句:body { behavior:url(csshover.htc);...