css - 如何使用CSS3选择器忽略IE8?

标签 css internet-explorer-8 css-selectors

在下面的示例中,我希望 IE8 以 红色 显示文本,但所有现代浏览器都以 绿色 显示文本。

我知道 IE8 不理解像 :nth-child() 这样的选择器,所以我想出了 p:nth-child(odd), p:nth-child( even) {...} 来覆盖以前的样式。

有没有更优雅的方法呢?我知道条件注释 ...[if lte IE 8]... 存在,但这不是我在这个问题中要问的。

p {
  color: red;
}

p:nth-child(odd),
p:nth-child(even) {
  color: green;
}
<p>paragraph 1</p>
<p>paragraph 2</p>
<p>paragraph 3</p>

最佳答案

CSS hack 可能并不优雅,但它们仍然可以完成工作。

IE8 有一些 CSS hack,阅读更多:http://browserhacks.com/

这是一个,使用 @media\0screen { ... }

p {
  color: green;
}

@media \0screen {
  p {
    color: red;
  }
}
<p>paragraph 1</p>
<p>paragraph 2</p>
<p>paragraph 3</p>

另一个使用 选择器 { property: value\9; }

p {
  color: green;
  color: red\9;
}
<p>paragraph 1</p>
<p>paragraph 2</p>
<p>paragraph 3</p>


一个小的 JS hack 是另一个,如果你更喜欢脚本
var isIE8 = document.all && !document.addEventListener;

/*Set html class if IE8*/
(function(d) {
  if (document.all && !document.addEventListener) {
    d.className += ' isIE8';
  }
})(document.documentElement);
p {
  color: green;
}

.isIE8 p {
  color: red;
}
<p>paragraph 1</p>
<p>paragraph 2</p>
<p>paragraph 3</p>

关于css - 如何使用CSS3选择器忽略IE8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43618489/

相关文章:

css - 如何通过嵌套在 Sass 中向属性选择器添加附加信息?

css - 过滤器 :alpha breaks :hover in IE?

javascript - 选择表中具有类的下一个元素

javascript - 等待光标在 IE10 中不显示

html - 如何让 div 随内容增长而不覆盖其他内容

jquery - IE8 中的 setTimeout 与 jquery jstween 动画循环

javascript - onsubmit ="return false"对 Internet Explorer 7/8 没有影响(仍然提交表单)

javascript - 如何实现jQuery的.not()?

html - :first-child not working on label (hidden radio button)

android - 如何删除 HTML5 输入类型时间的秒数