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