`

.htc使ie支持的css3属性

阅读更多

【简介:】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。

 

 

 

.

 

分享到:
评论

相关推荐

    ie-css3.htc 免费版

    《IE浏览器支持CSS3属性:ie-css3.htc详解》 在互联网技术发展的历程中,CSS3作为一种强大的样式表语言,极大地丰富了网页设计的可能性,提供了诸如圆角、阴影、渐变等美观效果。然而,早期版本的Internet Explorer...

    iecss3.htc支持输入框圆角

    在CSS中,我们可以通过添加`behavior`属性并指定`url(iecss3.htc)`来引入这个文件,使得IE浏览器能够识别并应用圆角效果。例如: ```css input[type="text"] { -webkit-border-radius: 10px; /* Chrome, Safari, ...

    引入PIE.htc使ie7,ie8 支持css3 border-radius圆角效果

    虽然PIE.htc对于兼容旧版IE浏览器起到了重要作用,但它也有一定的局限性,例如性能问题、不支持动态改变样式以及对某些CSS3属性的支持不足等。随着浏览器的更新换代,现在大部分用户都已经升级到支持CSS3的浏览器,...

    ie-css3.htc(内有使用方法).rar

    "ie-css3.htc"是一个行为(Behavior)文件,它是Microsoft Internet Explorer特有的一个技术,通过HTC(HTML Component)文件,可以扩展HTML元素的功能,使得IE能够理解并应用一些非标准的CSS属性。在这个案例中,这...

    PIE.htc在IE8实现一些css3效果

    1.PIE.htc是一个可以解决IE6/7/8无法支持CSS3属性的文件,其利用VML绘制相关的效果。要注意的是它并不能实现所有CSS3效果,其兼容的属性有:box-radius,线性渐变( linear-gradient),rgba,box-shadow,border-image。...

    ie-css3.htc

    - 兼容性问题:并非所有CSS3属性都能被ie-css3.htc支持,且仅适用于IE6-8,对IE9及以上版本无效。 - 移动端不适配:ie-css3.htc主要是为桌面浏览器设计的,对于移动设备或触摸交互的支持有限。 4. **替代方案**:...

    PIE.htc让IE 6,7,8支持CSS3的部分属性

    让IE 6,7,8支持CSS3的部分属性。它可以让低版本IE浏览器支持CSS3的border-radius、box-shadow、border-image、CSS3 Backgrounds (-pie-background)、Gradients、RGBA属性。

    ie-css3(让ie6 ie7 ue8支持css3).rar

    这个压缩包包含了一个名为“ie-css3(让ie678支持css3).htc”的文件,它是一种行为(Behavior)文件,用于通过脚本扩展IE的CSS能力,使其能够部分支持CSS3的一些特性。 描述中提到的“ie-css3(让ie678支持css3).rar...

    iecss3.htc

    使IE6、7、8、9能够使用css3的阴影和圆角属性,具体使用方法可见https://blog.csdn.net/weixin_42516949/article/details/103164361

    让ie也支持css3

    【标题】"让ie也支持css3"指的就是通过一种技术手段使老旧的IE浏览器能够识别并应用CSS3的一些新特性。这通常涉及到一种名为`.htc`(HTML Component)的文件格式,它是微软特有的HTC行为技术,可以将JavaScript或者...

    PIE.js使IE6,7,8支持部分常用CSS3渲染

    PIE.js 是一个JavaScript库,专为解决老版本Internet Explorer(IE6、7、8)不支持CSS3的一些关键渲染特性而设计。在那个时代,这些浏览器的市场份额仍然相当大,开发者们需要找到一种方法来实现跨浏览器的兼容性。...

    ie支持css3部分功能

    本文将详细探讨如何使IE支持CSS3的部分功能,包括阴影背景效果、圆角效果和渐变背景效果,并介绍一个名为PIE的工具。 首先,让我们关注阴影效果。CSS3中的box-shadow属性允许开发者为元素添加阴影,提升其立体感。...

    IE圆角 IE阴影,pie.js,pie.htc

    它的工作原理是通过JavaScript检测浏览器类型,如果是不支持CSS3特性的IE浏览器,Pie.js会动态添加相应的HTC行为到DOM元素上,从而实现这些效果。 "Pie.htc"是一个行为文件(.htc扩展名),它是 PIE ( Positioned ...

    ie兼容Css3属性

    "ie兼容Css3属性"这一主题主要关注如何使IE浏览器支持那些原本不被其完全支持的CSS3特性。 PIE,全称为“Position: absolute; !important; Expression;”,是一个JavaScript和VBScript混合的解决方案,主要用于解决...

    ie6实现css3属性

    这些HTC文件通常通过定义自定义的CSS属性(如-moz-border-radius或-webkit-border-radius)并在HTC文件中解析和应用这些属性,来实现IE6的圆角效果。 然而,需要注意的是,使用HTC文件会带来一些性能问题,因为它们...

    pie.js以及pie.htc

    此时,"pie.js" 和 "pie.htc" 这两个工具就显得尤为重要,它们为解决IE8对CSS3边框圆角(border-radius)支持不足的问题提供了方案。 "pie.js" 是一个JavaScript库,它的主要任务是检测浏览器是否支持CSS3的border-...

    让 IE6, 7和 8支持CSS3

    3. **CSS的`behavior`属性**:学习如何在CSS中使用`behavior`属性引用HTC文件,使IE浏览器能够处理额外的样式规则。 4. **IE条件注释**:可能的文章内容会涵盖如何使用条件注释来针对不同的IE版本应用特定的CSS样式...

    ie6 7 支持css3 圆角

    PIE 是一个著名的工具,它通过JavaScript和HTC技术,使老版IE浏览器能够理解并渲染CSS3的一些关键属性,包括border-radius。 PIE的工作原理是通过JavaScript检测浏览器类型和版本,然后针对不支持CSS3特性的浏览器...

Global site tag (gtag.js) - Google Analytics