72

Web サイトで div をゼブラ ストライプしようとしていますが、単純に聞こえますが、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>

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;
}

フィドル

すでにフィドルにあるコードは基本的にヘッダーを無視してストライピングを続行すると思っていましたが、ヘッダーを子と見なしているようです

4

3 に答える 3

130

nth-childを使用せず、 nth-of-typeを使用します

div.container > div:nth-of-type(odd) {
    background: #e0e0e0;
}

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

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

div.container>div:nth-of-type(odd) {
  background: #e0e0e0;
}

h3 {
  line-height: 36pt;
  font-weight: bold;
  color: blue;
}
<div class="container">
  <h3>Title</h3>
  <div class="row">Content</div>
  <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>
  <h3>Title</h3>
  <div class="row">Content</div>
  <div class="row">Content</div>
  <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>

于 2013-02-21T14:24:24.757 に答える
10

おそらく、子ではなくタイプで一致させたいと思うでしょう。

次のような:nth-​​of-typeを使用します

.row:nth-of-type(odd) {
    background: #e0e0e0;
}
于 2013-02-21T14:25:29.467 に答える
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>

CSS

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

また、ブラウザのサポートが重要な場合は、代わりにゼブラ ストライピング サーバー サイド用に追加のクラスを生成することをお勧めします。

于 2013-02-21T14:23:06.053 に答える