编制和维护,即特定的样式表(Compiling and maintaining ie-specifi

2019-06-27 10:19发布

什么是在一个单独的CSS文件保持IE的解决方法常见的做法? 我说的是不切实际的通过其他方式制定出更深层次的问题(如包括一个64位编码嵌入资源沿着替代图像的URL; boxsizing.htc解决办法等) 注:考虑dataURI VS时,我保守拼合香草,所以只有少数

有时候,我不得不求助于类似的代码

.some-class-lets-say-datepicker {
  background-image: url(data:image/png;base64,/*encoded image*/);
  *background-image: url(../gfx/lets-say-datepicker-icon.png);
}

与编码的图像串为平均100〜300个字符。 鉴于上面的代码,这会导致一些redundand交通 - 为兼容的浏览器下载redundand URL,并为IE7下载独立的图像请求的BASE64 stringon顶部。 我觉得这个开销是微不足道的两个(及,毕竟,IE7的用户有更大的问题担心:)

(?),同时下面会有很多清洁:

<!--[if !IE]> -->
  <link href="main.css" rel="stylesheet" />
<!-- <![endif]-->
<!--[if lt IE 8]>
  <link href="main_ie.css" rel="stylesheet"/>
<![endif]-->

但单独的维护似乎并没有在所有的吸引力。 封闭的样式表提供了条件句 ,有没有类似的SASS / LESS的东西还是有不同的做法完全,你会建议?

Answer 1:

如果你确定与产生2种不同的样式萨斯(版本3.2或更新版本)可以做到这一点很容易。

这是你的混入:

$ie-only: false !default;

@mixin hide-from-ie {
    if $ie-only != true {
        @content;
    }
}

@mixin show-only-ie {
    if $ie-only == true {
        @content;
    }
}

在您的SCSS文件:

.some-class-lets-say-datepicker {
    @include hide-from-ie {
        background-image: url(data:image/png;base64,/*encoded image*/);
    }

    @include show-only-ie {
        background-image: url(../gfx/lets-say-datepicker-icon.png);
    }
}

让一个用于导入其他SCSS文件,但这个在顶部有一个单独的IE浏览器只能对文件:

$ie-only: true;

使用条件注释来服务老版本的IE使用$生成的css文件即只设置为true,和所有其他浏览器获得与$即只设置为默认为false产生的一个。

灵感这种技术在这里找到: http://jakearchibald.github.com/sass-ie/



Answer 2:

您可以使用JavaScript来添加一个类基于浏览器和其他东西的HTML - 我觉得这些真的有用! 这是我使用的一个http://rafael.adm.br/css_browser_selector



文章来源: Compiling and maintaining ie-specific stylesheets
标签: css sass less