html - CSS 中第 Nth-child() 选择器替代方案

标签 html css css-selectors

所以我们要访问列表中的-n+3 li元素(如果li元素之前有不同类型的元素我们想要访问的是我们不关心的细节),我使用了以下方式:

<html>
    <body>

        <style>
            li:nth-child(-n+3) {
                background: #ff0000;
            }
        </style>

        <p>An unordered list:</p>

        <ul>
            <h1>heading</h1>
            <li>coffee</li>
            <li>tea</li>
            <li>water</li>
            <li>coca-cola</li>
            <li>sprite</li>
            <li>orange juice</li>
            <li>beer</li>
        </ul>

    </body>
</html>

它工作正常,但是在 Explorer 8 和更早版本中,不支持 nth-child() 选择器。那么我们如何在不使用伪类nth-child()的情况下访问-n+3 li元素呢?

最佳答案

您可以使用 :first-childadjacent sibling selector .他们在 IE7+ 下工作。

注意事项:

  • shouldn't be using h1 tag as a direct child of any ul .但如果你的结构就是这样,你不能修改它,那么你可以使用 :first-child + li, :first-child + li + li
  • :nth-child(-n+3) 通常会选择父项的前 3 个子项。在您的演示中,由于第一个 child 是 h1 并且您还将元素类型 (li) 附加到 nth-child(-n+ 3) h1 没有被选中,只有后面的两个 li 被选中。我在注释 1 中提到的选择器将做同样的事情(也就是说,它将选择第一个 child 之后的前两个 li - 即 h1标签——不管 ul 有多少 child )。

演示 1:(ul 内没有任何其他标签)

li:first-child,
li:first-child + li {
  color: red;
}
<ul>
  <li>first</li>
  <li>second</li>
  <li>third</li>
  <li>fourth</li>
  <li>and so on..</li>
</ul>

演示 2:(使用您的结构)

ul :first-child + li,
ul :first-child + li + li {
  color: red;
}

li:nth-child(-n+3){
  background: beige;
}
<p>An unordered list:</p>
<ul>
  <h1>heading</h1>
  <li>coffee</li>
  <li>tea</li>
  <li>water</li>
  <li>coca-cola</li>
  <li>sprite</li>
  <li>orange juice</li>
  <li>beer</li>
</ul>

关于html - CSS 中第 Nth-child() 选择器替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36596479/

相关文章:

c# - 是否有等同于@HTML.dropdownlist 的复选框

javascript - 导航链接不起作用

html - 看不到我的导航标签

css - 选择一系列嵌套元素中的每隔一个元素(每个元素只有一个子元素)

css - 分级评论系统

html - 如何在div中均匀分布元素?

javascript - jQuery 中 HTML 表单标签的有效/无效名称是什么?

jquery - CSS 在浏览器中未处于事件状态时未更新?

javascript - 如何更改应用于几个元素中的跨度的类?

CSS 属性选择器 : How can I style parent element but use attribute of child element?