【问题标题】:How to set different background color of every three html table rows in alternate如何交替设置每三个html表格行的不同背景颜色
【发布时间】:2017-07-05 17:05:59
【问题描述】:

假设我有两个名为 table1 和 table2 的 HTML 表。如果我想对 table2 的每三行有不同的背景,我该如何使用 CSS 来实现?例如,将前 3 行的背景设置为蓝色,然后将另外 3 行设置为绿色,再将另外 3 行设置为蓝色,再将另外 3 行设置为绿色,依此类推。基本上我希望每三行交替使用两种不同的背景颜色。我发现了偶数行和奇数行或每第 n 行的 CSS 样式,但不适用于这种情况。我附上了示例表的屏幕截图。我不想像在这段代码中那样在单个行中硬编码,而是想用 CSS 样式来做。

table {
  font-family: arial, sans-serif;
  border-collapse: collapse;
  width: 100%;
}

td,
th {
  border: 1px solid #dddddd;
  text-align: left;
  padding: 1px;
}
<table id="table2">
  <tr>
    <th>Company</th>
    <th>Contact</th>
    <th>Country</th>
  </tr>
  <tr bgcolor="#dddddd">
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr bgcolor="#dddddd">
    <td>Centro comercial Moctezuma</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
  <tr bgcolor="#dddddd">
    <td>Ernst Handel</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>Helen Bennett</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>Yoshi Tannamuri</td>
    <td>Canada</td>
  </tr>
  <tr>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Giovanni Rovelli</td>
    <td>Italy</td>
  </tr>
  <tr bgcolor="#dddddd">
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr bgcolor="#dddddd">
    <td>Centro comercial Moctezuma</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
  <tr bgcolor="#dddddd">
    <td>Ernst Handel</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
    <td>a</td>
    <td>b</td>
    <td>c</td>
  </tr>
  <tr>
    <td>a</td>
    <td>b</td>
    <td>c</td>
  </tr>
  <tr>
    <td>a</td>
    <td>b</td>
    <td>c</td>
  </tr>
</table>

感谢任何帮助]1

【问题讨论】:

    标签: javascript html css


    【解决方案1】:

    您可以使用“nth-child”来实现这一点。

    tr:nth-child(6n+1),
    tr:nth-child(6n+2),
    tr:nth-child(6n+3) {
      background: #dddddd;
    } 
    

    试试下面的sn-p

    table {
      font-family: arial, sans-serif;
      border-collapse: collapse;
      width: 100%;
    }
    
    td, th {
      border: 1px solid #dddddd;
      text-align: left;
      padding: 1px;
    }
    tr:nth-child(6n+1),
    tr:nth-child(6n+2),
    tr:nth-child(6n+3) {
      background: #dddddd;
    }
    	
    <table id="table2">
      <tr>
        <th>Company</th>
        <th>Contact</th>
        <th>Country</th>
      </tr>
      <tr>
        <td >Alfreds Futterkiste</td>
        <td>Maria Anders</td>
        <td>Germany</td>
      </tr>
      <tr>
        <td >Centro comercial Moctezuma</td>
        <td>Francisco Chang</td>
        <td>Mexico</td>
      </tr>
      <tr>
        <td >Ernst Handel</td>
        <td>Roland Mendel</td>
        <td>Austria</td>
      </tr>
      <tr>
        <td>Island Trading</td>
        <td>Helen Bennett</td>
        <td>UK</td>
      </tr>
      <tr>
        <td>Laughing Bacchus Winecellars</td>
        <td>Yoshi Tannamuri</td>
        <td>Canada</td>
      </tr>
      <tr>
        <td>Magazzini Alimentari Riuniti</td>
        <td>Giovanni Rovelli</td>
        <td>Italy</td>
      </tr>
      <tr>
        <td >Alfreds Futterkiste</td>
        <td>Maria Anders</td>
        <td>Germany</td>
      </tr>
      <tr>
        <td >Centro comercial Moctezuma</td>
        <td>Francisco Chang</td>
        <td>Mexico</td>
      </tr>
      <tr>
        <td >Ernst Handel</td>
        <td>Roland Mendel</td>
        <td>Austria</td>
      </tr>
      <tr>
        <td>a</td>
        <td>b</td>
        <td>c</td>
      </tr>
      <tr>
        <td>a</td>
        <td>b</td>
        <td>c</td>
      </tr>
      <tr>
        <td>a</td>
        <td>b</td>
        <td>c</td>
      </tr>
    </table>

    【讨论】:

    • 既然这也选择了表头,为什么不使用6n+2、6n+3和6n+4
    • 这哥们太棒了
    【解决方案2】:

    您希望每三组行使用另一种颜色。让我们解释一下 css tr:nth-child(6n+1), tr:nth-child(6n+2), tr:nth-child(6n+3) 的公式,其中 n=0,1,2,3......这个tr 选择将从 1-3、7-9....开始。

    同样tr:nth-child(6n+4), tr:nth-child(6n+5), tr:nth-child(6n+6),其中 n=0,1,2,3……此tr 选择将从 4-6、10-12...开始。

    tr:nth-child(6n+1),
    tr:nth-child(6n+2),
    tr:nth-child(6n+3) {
      background: blue;
    }
    
    tr:nth-child(6n+4),
    tr:nth-child(6n+5),
    tr:nth-child(6n+6) {
      background: green;
    }
    
    table {
      color: #fff;
    }
    <table id="table2">
      <tr>
        <th>Company</th>
        <th>Contact</th>
        <th>Country</th>
      </tr>
      <tr>
        <td>Alfreds Futterkiste</td>
        <td>Maria Anders</td>
        <td>Germany</td>
      </tr>
      <tr>
        <td>Centro comercial Moctezuma</td>
        <td>Francisco Chang</td>
        <td>Mexico</td>
      </tr>
      <tr>
        <td>Ernst Handel</td>
        <td>Roland Mendel</td>
        <td>Austria</td>
      </tr>
      <tr>
        <td>Island Trading</td>
        <td>Helen Bennett</td>
        <td>UK</td>
      </tr>
      <tr>
        <td>Laughing Bacchus Winecellars</td>
        <td>Yoshi Tannamuri</td>
        <td>Canada</td>
      </tr>
      <tr>
        <td>Magazzini Alimentari Riuniti</td>
        <td>Giovanni Rovelli</td>
        <td>Italy</td>
      </tr>
      <tr>
        <td>Alfreds Futterkiste</td>
        <td>Maria Anders</td>
        <td>Germany</td>
      </tr>
      <tr>
        <td>Centro comercial Moctezuma</td>
        <td>Francisco Chang</td>
        <td>Mexico</td>
      </tr>
      <tr>
        <td>Ernst Handel</td>
        <td>Roland Mendel</td>
        <td>Austria</td>
      </tr>
      <tr>
        <td>a</td>
        <td>b</td>
        <td>c</td>
      </tr>
      <tr>
        <td>a</td>
        <td>b</td>
        <td>c</td>
      </tr>
      <tr>
        <td>a</td>
        <td>b</td>
        <td>c</td>
      </tr>
    </table>
    现在您将根据需要获得蓝色和绿色的替代颜色

    【讨论】:

      【解决方案3】:

      您可以使用 javascript 设置背景颜色

       $('document').ready(function(){
           $('#table1 tr').each((index, value) => {
               if(index % 3 != 0){
                   value.css({'background-color': '#0000FF'});
               }else{
                   value.css({'background-color': '#00FF00'});
               }
           });
      });
      

      或者定义两个css类

      .blue {background-color: #0000FF;}
      .green {background-color: #00FF00;}
      

      并在你想要的所有 tr 表中分配这个类

      【讨论】:

      • 非常感谢!
      【解决方案4】:

      你可以将header和body分开,使用nth-child概念

      <!DOCTYPE html>
      <html>
      <head>
      <style>
      table {
          font-family: arial, sans-serif;
          border-collapse: collapse;
          width: 100%;
      }
      
      table tbody tr:nth-child(6n+1),table tbody tr:nth-child(6n+2),table tbody 
      tr:nth-child(6n+3) {
           background: #dddddd;
      }
      
      td, th {
          border: 1px solid #dddddd;
          text-align: left;
          padding: 1px;
      }
      
      
      </style>
      </head>
      <body>
      
      <table id="table2">
      <thead>
        <tr>
          <th>Company</th>
          <th>Contact</th>
          <th>Country</th>
        </tr>
      </thead>
      <tbody>
        <tr bgcolor="#dddddd">
          <td >Alfreds Futterkiste</td>
          <td>Maria Anders</td>
          <td>Germany</td>
        </tr>
        <tr bgcolor="#dddddd">
          <td >Centro comercial Moctezuma</td>
          <td>Francisco Chang</td>
          <td>Mexico</td>
        </tr>
        <tr bgcolor="#dddddd">
          <td >Ernst Handel</td>
          <td>Roland Mendel</td>
          <td>Austria</td>
        </tr>
        <tr>
          <td>Island Trading</td>
          <td>Helen Bennett</td>
          <td>UK</td>
        </tr>
        <tr>
          <td>Laughing Bacchus Winecellars</td>
          <td>Yoshi Tannamuri</td>
          <td>Canada</td>
        </tr>
        <tr>
          <td>Magazzini Alimentari Riuniti</td>
          <td>Giovanni Rovelli</td>
          <td>Italy</td>
        </tr>
        <tr bgcolor="#dddddd">
          <td >Alfreds Futterkiste</td>
          <td>Maria Anders</td>
          <td>Germany</td>
        </tr>
        <tr bgcolor="#dddddd">
          <td >Centro comercial Moctezuma</td>
          <td>Francisco Chang</td>
          <td>Mexico</td>
        </tr>
        <tr bgcolor="#dddddd">
          <td >Ernst Handel</td>
          <td>Roland Mendel</td>
          <td>Austria</td>
        </tr>
        <tr>
          <td>a</td>
          <td>b</td>
          <td>c</td>
        </tr>
        <tr>
          <td>a</td>
          <td>b</td>
          <td>c</td>
        </tr>
        <tr>
          <td>a</td>
          <td>b</td>
          <td>c</td>
        </tr>
      <tbody>
      </table>
      
      </body>
      </html>

      【讨论】:

        【解决方案5】:
        <html>
        <head>
        <title></title>
        <style>
            .green{background-color:white;}
            .blue{background-color:gray;}
        </style>
        <script>
        
        function alterColor(id){
                var table = document.getElementById(id);
                var rows = table.getElementsByTagName("tr");    //get all the rows
                for(i = 0; i < rows.length; i++){               //alterColor styles         
                    doalterColor(rows[i], i);
        
                }
        }
        function doalterColor(row, i){
        if((i % 6 == 0) ||(i % 6 == 1)||(i % 6 == 2)){
                row.className = "blue";
            }else{
                row.className = "green";
            }
        }
        </script>
        </head>
        <body onLoad="alterColor('mytable')">
        
        <table id="mytable">
            <tr>
            <td>cell 1</td>
            <td>cell 2</td>
          </tr><tr>
            <td>cell 2</td>
            <td>cell 2</td>
          </tr><tr>
            <td>cell 3</td>
            <td>cell 2</td>
          </tr><tr>
            <td>cell 4</td>
            <td>cell 2</td>
          </tr><tr>
            <td>cell 5</td>
            <td>cell 2</td>
          </tr><tr>
            <td>cell 6</td>
            <td>cell 2</td>
          </tr><tr>
            <td>cell 7</td>
            <td>cell 2</td>
          </tr><tr>
            <td>cell 8</td>
            <td>cell 2</td>
          </tr><tr>
            <td>cell 9</td>
            <td>cell 2</td>
          </tr><tr>
            <td>cell 10</td>
            <td>cell 2</td>
          </tr><tr>
            <td>cell 11</td>
            <td>cell 2</td>
          </tr><tr>
            <td>cell 12</td>
            <td>cell 2</td>
          </tr><tr>
            <td>cell 13</td>
            <td>cell 2</td>
          </tr>
        </table>
        </body>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-11-06
          • 1970-01-01
          • 1970-01-01
          • 2011-03-03
          • 1970-01-01
          • 2018-08-01
          • 2014-03-23
          相关资源
          最近更新 更多