0

再会,

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

第一个代码适用于旧版本的 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] 我也想知道放置这两个条件注释的正确顺序(如果有的话)。请帮助我,因为我在与兼容性相关的任何事情上都是新手:/

4

2 回答 2

1

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

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

希望能帮助到你。

于 2013-03-06T23:41:27.503 回答
0

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

所以我建议你使用:

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

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

于 2013-03-06T23:37:11.030 回答