【问题标题】:HTML: Using conditional commentsHTML:使用条件注释
【发布时间】:2013-02-21 23:59:38
【问题描述】:

早安,

我想应用两个不同的 CSS 代码来修复 IE8 中的一些字体渲染问题(假粗体),如果它们有相同的名称,后者无法识别所有字体系列,而是只能识别第一个字体-family,所以我正在尝试使用条件 cmets 来解决这个问题:

第一个代码适用于旧版本的 IE(包括 IE8):

<!--[if lte IE 8]>
     <link href="IE8fonts.css" rel="stylesheet" type="text/css">
<![endif]-->

第二个适用于 IE9、IE10 和所有非 IE 浏览器(Chrome、Firefox、Opera、Safari...),它们都没有这个虚假的粗体问题:

<!--[if IE 9 | !IE]><!-->
     <link href="fonts.css" rel="stylesheet" type="text/css">
<!--<![endif]-->

我知道第一个代码是正确的(或者可能不是:p),所以我想知道第二个代码是否也正确,因为当我在 IE 中更改兼容模式时,我没有得到我期望的结果,当然有条件有问题 [如果 IE 9 | !IE] 我还想知道放置这两个条件 cmets 的正确顺序(如果有的话)。 请帮我解决这个问题,因为我在与兼容性相关的任何事情上都是新手:/

【问题讨论】:

  • 解决原来的问题不是更好吗?我认为 IE 8 没有正确声明粗体字体的问题。不管最初的问题具体是什么,其他浏览器也可能出现,所以使用 IE 版本嗅探不是正确的方法。

标签: css internet-explorer-8 comments conditional


【解决方案1】:

您可以先应用 IE9+ 和其他浏览器的 css,然后应用 IE8 或更低版本的条件注释,因此 fonts.css 中的 font-family 规则将被 IE8fonts.css 中的规则覆盖,如果浏览器小于或等于IE8。这样可以避免复杂和不必要的条件 cmets。

<link href="fonts.css" rel="stylesheet" type="text/css">
<!--[if lte IE 8]>
     <link href="IE8fonts.css" rel="stylesheet" type="text/css">
<![endif]-->

希望对你有帮助。

【讨论】:

    【解决方案2】:

    条件 cmets 是 IE 特有的功能。其他浏览器只是将它们视为普通的 cmets。请记住,HTML 注释以&lt;!-- 开头并以--&gt; 结尾。因此,&lt;!--[anything]&gt; 是普通评论的开始,非 IE 用户代理将忽略之后的任何内容,直到下一次出现 --&gt;。另一方面,&lt;!--[anything]&gt;&lt;!--&gt; 是完整的注释,非 IE 浏览器将处理之后的任何内容。

    所以我建议你使用:

    <!--[if gte IE 9]><!-->
      <link href="fonts.css" rel="stylesheet" type="text/css">
    <!--<![endif]-->
    

    从常规 HTML 解析器(非 IE)的角度来看,这是包含一个链接元素的两个常规 cmets。

    【讨论】:

      猜你喜欢
      • 2012-06-02
      • 2016-02-15
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 2011-10-02
      • 2011-03-03
      • 2011-10-23
      相关资源
      最近更新 更多