CSS div alternating colour

前端 未结 3 1691
醉话见心
醉话见心 2020-12-13 08:12

I\'m trying to zebra stripe my divs in my website, sounds simple enough, however I\'ve found that when I added a header in between the rows of my divs it seems to count the

相关标签:
3条回答
  • 2020-12-13 08:34

    The easiest solution is of course just to wrap the elements you want striped.

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

    Bear in mind also that if browser support is important to you, you might want to generate additional classes for zebra-striping server side instead.

    0 讨论(0)
  • 2020-12-13 08:42

    You probably want to match on type, not child.

    Use :nth-of-type such as

    .row:nth-of-type(odd) {
        background: #e0e0e0;
    }
    
    0 讨论(0)
  • 2020-12-13 08:51

    Don't use nth-child, use 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>

    0 讨论(0)
提交回复
热议问题