1

跳到底部提问,但首先,有一点背景。

所以我一直在研究 CSS 编译器(比如 Sass & Less),并且对它们非常感兴趣,不是因为它们帮助我更容易理解任何事情(我已经做了几年 css)而是他们减少了杂物,帮助我更容易看到事情。

我最近一直在研究可靠地实现内联块(和 clearfix),这需要大量无关的代码和技巧。现在根据该领域的所有权威人士的说法,我不应该将 IE hack 放在我做 CSS 的同一页面中,我应该让它们有条件。但对我来说,处理和管理所有这些额外的代码真的很麻烦,这就是为什么我真的很喜欢像 Less 这样的东西。您无需应用无语义的类,而是指定一个 mixin 并应用一次,然后一切就绪。

所以我想我了解了一点(我想解释一下我的观点),但基本上,我正处于这些 CSS 编译器对我非常有用的地步,并允许我抽象出很多琐碎的东西,并且可靠地应用它们一次,然后编译它。我想有一种方法能够将 IE 特定样式编译到他们自己的条件文件中(ala Less / Sass),这样我就不必无缘无故地管理 2 个文件。

是否存在诸如运行并可以使下划线/星号黑客从自己的文件中分离出来的脚本/应用程序之类的东西?

4

3 回答 3

9

这并不是真正的编译器技巧,但如果您想使用条件注释而不必编译单独的每个浏览器样式表,您可以简单地使用 HTML 条件注释来注入样式挂钩。例如:

    ...
</head>
<!--[if lte IE 6]><body class="ie6 ie7"><![endif]-->
<!--[if lte IE 7]><body class="ie7"><![endif]-->
<!--[if gte IE 8]><!--><body><!--<![endif]-->

现在,您可以在与其余规则相同的样式表中定位要应用于 IE<=6 和 IE<=7 的规则:

body.ie6 #thing { position: relative; }
body.ie7 #otherthing { z-index: 0; }

这比 IMO 稍微干净一些* html,后者是最后一个可接受的 CSS hack。(“star hack”和“underscore hack”是无效的 CSS:避免。)

于 2010-04-30T19:16:22.730 回答
1

您可以有条件地包含为 IE6/7/whathaveyou 生成的 CSS 表:

<head>
    <link rel="stylesheet" href="/css/master.css" type="text/css"/>
    <!--[if IE 6]>
      <link rel="stylesheet" href="/css/ie6.css" type="text/css"/>
    <![endif]-->
</head>

此外,如果您担心将 IE 修复/hack 与您的大部分 SASS/CSS 混在一起,您可以将它们分解为它们自己的部分:

@import ie6.sass

以上将包括当前 SASS 文档中该特定版本 IE 的所有规则。部分文档可以在这里找到:SASS Partials

于 2010-04-30T19:22:17.913 回答
0

这比 IMO 稍微干净一些,* html hack 是最后一个可接受的 CSS hack。(“star hack”和“underscore hack”是无效的 CSS:避免。)

不是真的:虽然“下划线破解”无效,但“* html”和“*+html”破解是完全有效的 CSS。自己检查一下。;)

~

至于上面的问题,目前我不知道有任何编译器能够做到这一点,我仍然更喜欢使用 start hack (IE6-7) 并将所有内容保存在一个文件中。更易于维护。

于 2010-09-23T15:16:30.460 回答