我下载了.htc文件并嵌入在css中以获取Internet Explorer 8中的圆角。但我想知道它是如何工作的
.curved {
-moz-border-radius:10px;
-webkit-border-radius:10px;
behavior:url(border-radius.htc);
}
答案 0 :(得分:16)
这是一个HTML Component,一种在网页上封装逻辑的方法。行为在1999 w3 CSS working draft中描述但是(据我所知)只有Microsoft在IE 5中提供了一个实现,而今天有更好的方法来完成相同的任务。
另请参阅:http://msdn.microsoft.com/en-us/library/ms531018.aspx
HTC只应用作回退机制(您的示例演示)。在IE 9及更高版本中使用标准的跨浏览器CSS和JavaScript可以实现大部分可能的功能。
至于为什么它起作用,我的猜测是该行为操纵特定于IE的功能,如DHTML过滤器或VML,可用于实现超前于他们的视觉效果时间(虽然现已弃用)。
答案 1 :(得分:-1)
所有浏览器都提供了一些使用javascript查看样式表规则的方法,并动态插入新规则。通常情况下,IE会为其不支持的任何内容返回“未知”,例如; div p:first-child
将更改为div p:unknown
,而p a[href]
将完全返回为“未知”。幸运的是,IE认识到:将其悬停为熟悉的东西,并将其留下。
IE也支持所谓的behaviors
;预定义的功能,如动态内容加载或持久数据存储,以及可以构建到.htc或.hta文件中的自定义行为。这些行为通过css链接到html节点,并“增强”规则选择器使用给定行为选择的节点。
结合上述内容,应该可以创建一个行为,搜索样式以获取IE不支持的规则,并诱使受影响的元素以其他方式应用相关样式。涉及的步骤如下:
搜索所有样式表:hover规则IE不支持, 插入IE确实支持的新规则,例如具有类名的规则, 最后,设置用于切换类名的脚本事件。 这样,可以支持:hover,:active和:focus,作为开发人员,除了包含行为之外,您不必执行任何操作。其他所有内容都是全自动运行的。
与版本1和版2不同,版本3还支持动态添加的html(ajax)。区别在于1和2主动搜索页面上受影响的元素onload(所以;只有一次),而3使用表达式让节点自己进行回调。
您可以阅读更多相关信息here