IE CSS *黑客和HTC文件

时间:2013-06-07 14:41:29

标签: css internet-explorer sass html-components

关于在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);
    }
}

由于

2 个答案:

答案 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定义为真实,你很高兴。