CSS 编译器和将 IE hack 转换为条件 CSS

发布于 2024-08-31 02:42:34 字数 1539 浏览 8 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

彩虹直至黑白 2024-09-07 02:42:34

这并不是真正的编译器技巧,但如果您想使用条件注释而不必编译单独的每个浏览器样式表,您可以简单地使用 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 hack 稍微干净一些,这是最后一个可接受的 CSS hack。 (“星号 hack”和“下划线 hack”是无效的 CSS:避免。)

It's not really a compiler trick, but if you want to use conditional comments without having to compile separate per-browser stylesheets, you can simply use HTML conditional comments to inject a styling hook. For example:

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

Now you can target rules you want to apply to IE<=6 and IE<=7 in the same stylesheet as the rest of the rules:

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

This is IMO marginally cleaner than the * html hack, which is the last acceptable CSS hack. (The “star hack” and “underscore hack” are invalid CSS: avoid.)

皇甫轩 2024-09-07 02:42:34

您可以有条件地包含为 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 修复/黑客与大量 SASS/CSS 混合在一起,您可以将它们分解为自己的部分:

@import ie6.sass

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

You can just conditionally include a generated CSS sheet for IE6/7/whathaveyou:

<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>

Also, if you're worried about mixing in the IE fixes/hacks with the bulk of your SASS/CSS, you can break them up into their own partials:

@import ie6.sass

The above would include all the rules for that particular version of IE in the current SASS document. Documentation on partials can be found here: SASS Partials

人海汹涌 2024-09-07 02:42:34

在我看来,这比 * html hack 稍微干净一些,* html hack 是最后一个可接受的 CSS hack。 (“星号 hack”和“下划线 hack”是无效的 CSS:避免。)

事实并非如此:虽然“underscore hack”是无效的,但“* html”和“*+html” hack是完全有效的CSS。 自己检查一下。 ;)

~

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

This is IMO marginally cleaner than the * html hack, which is the last acceptable CSS hack. (The “star hack” and “underscore hack” are invalid CSS: avoid.)

Not really: while the "underscore hack" is invalid, the "* html" and "*+html" hacks are perfectly valid CSS. Check it out yourself. ;)

~

As for the question above, for now I'm not aware of any compiler able to do that, I still prefer to user the start hack (IE6-7) and keep everything in one file. More maintainable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文