2

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

谢谢

4

2 回答 2

3

其他浏览器不识别behavior为有效的 CSS 属性,因此您的 .htc 文件不会被 IE 加载。

于 2013-06-07T14:46:55.407 回答
0

请注意,专有behavior属性由 IE8 解析和解释;你在polyfill 使用部分被警告过:

如果你在behavior属性前面加上一个星号,就像上面看到的[原文如此],它只会被 IE6 和 IE7 看到,而不是被 IE8+(这是一个 hack)看到,这对那些较新的浏览器的性能更好。

如果你对 css hack 不感兴趣(或者对整洁的设置和性能不感兴趣),你应该使用IE 条件注释来包含一个单独的 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,你很高兴。

于 2014-04-23T04:41:11.937 回答