关于在CSS中使用.htc文件的快速问题。
如果我使用*来阻止任何东西,除了使用样式的IE并且它是我正在使用的文件(htc,图像等),其他浏览器是否也加载它?
我有一个SASS mixin用于盒子大小调整但不想加载htc文件,如果我没有。
// Box sizing
@mixin box-sizing($boxmodel) {
-webkit-box-sizing: $boxmodel;
-moz-box-sizing: $boxmodel;
-ms-box-sizing: $boxmodel;
box-sizing: $boxmodel;
@if $boxmodel == border-box {
*behavior: url(/js/boxsizing.htc);
}
}
由于
答案 0 :(得分:3)
其他浏览器不会将behavior
标识为有效的CSS属性,因此.htc文件不会被IE加载。
答案 1 :(得分:0)
请注意专有的behavior
属性gets parsed and interpreted by IE8;你在polyfill usage section:
如果你在
behavior
属性前加上一个星号,就像上面[sic]所见,那就是它 只会被IE6和& IE7,而不是IE8 +(它是一个黑客) 更好的在那些较新的浏览器上的性能。
如果你在css hacks上不是很大(或者在整洁的设置和性能上很重要),你应该使用IE conditional comments为IE7包含一个单独的样式表:
<!--[if lte IE 7]>
<link rel="stylesheet" href="ie7.css">
<![endif]-->
<!--[if (gt IE 7)|!(IE)]><!-->
<link rel="stylesheet" href="majestic.css">
<!--<![endif]-->
您还可以使用自定义mixin作为属性并编译两个版本的样式表:
@mixin border-box($ie7) {
@if $ie7 {
//forget vendor prefixes, this is for IE7 only!
behavior: url(/js/boxsizing.htc);
} else {
//remember the vendor prefixes this time!
box-sizing: border-box;
}
}
在$ie7
中将ie7.scss
定义为真实,你很高兴。