CSS div交替颜色

And*_*ris 60 html css zebra-striping

我试图在我的网站上斑马条纹我的divs,听起来很简单,但是我发现当我在div的行之间添加一个标题时,它似乎计算奇数/偶数样式中的标题

HTML

<div class="container">
    <h3>Title</h3>
    <div class="row">Content</div>
    <div class="row">Content</div>
    <h3>Title</h3>
    <div class="row">Content</div>
    <div class="row">Content</div>
    <div class="row">Content</div>
    <h3>Title</h3>
    <div class="row">Content</div>
    <div class="row">Content</div>
    <div class="row">Content</div>
    <div class="row">Content</div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.container {
    width:600px;
    margin:0 auto;
}

.row {
    line-height:24pt;
    border: solid 1px black;
}

.row:nth-child(odd) {
    background: #e0e0e0;
}

h3 {
    line-height:36pt;
    font-weight:bold;
    color:blue;
}
Run Code Online (Sandbox Code Playgroud)

小提琴

我本以为已经在小提琴中的代码基本上会忽略标题并继续进行条带化,但看起来它认为标题是一个小孩

j08*_*691 104

不要使用nth-child,请使用nth-of-type

div.container > div:nth-of-type(odd) {
    background: #e0e0e0;
}
Run Code Online (Sandbox Code Playgroud)

jsFiddle例子

  • 请注意,这"继续"通过标题计数; 如果你想"重置"计数器(例如,使标题之后的第一行始终为白色),你需要使用Jezen的解决方案. (2认同)
  • @Musikero31 因为在这个问题中,`nth-child` 会计算 div *和* h3 元素,因为它们都是父 div 容器的子元素。通过在选择器的 div 上使用 `nth-of-type`,你可以有效地过滤掉 h3 元素。 (2认同)

Rog*_*sjö 7

你可能想要匹配类型,而不是孩子.

使用:nth-​​of-type

.row:nth-of-type(odd) {
    background: #e0e0e0;
}
Run Code Online (Sandbox Code Playgroud)


Jez*_*mas 5

最简单的解决方案当然只是包装您想要条纹的元素.

你更新的jsFiddle.

HTML

<div class="container">
    <h3>Title</h3>
    <div class="zebra">
        <div class="row">Content</div>
        <div class="row">Content</div>
    </div>
    <h3>Title</h3>
    <div class="zebra">
        <div class="row">Content</div>
        <div class="row">Content</div>
        <div class="row">Content</div>
    </div>
    <h3>Title</h3>
    <div class="zebra">
        <div class="row">Content</div>
        <div class="row">Content</div>
        <div class="row">Content</div>
        <div class="row">Content</div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

.row:nth-child(odd) {background: #e0e0e0;}
Run Code Online (Sandbox Code Playgroud)

还要记住,如果浏览器支持对您很重要,您可能希望为zebra-striping服务器端生成其他类.