admin管理员组文章数量:1323342
Suppose I have two HTML tables named table1 and table2. If I want to have different background of every alternative three rows of table2, how can I achieve that using CSS? For example set background of first 3 rows as blue, then another 3 rows as green, again another 3 rows as blue, again another 3 rows as green and so on. Basically I want two different background colors for every three rows in alternate. I found CSS styling for even and odd rows, or every nth rows, but not for this case. I have attached the screenshot of sample table. Rather than hard coding in individual row like in this code, I want to do it in CSS styling.
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 ercial 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 ercial 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>
Suppose I have two HTML tables named table1 and table2. If I want to have different background of every alternative three rows of table2, how can I achieve that using CSS? For example set background of first 3 rows as blue, then another 3 rows as green, again another 3 rows as blue, again another 3 rows as green and so on. Basically I want two different background colors for every three rows in alternate. I found CSS styling for even and odd rows, or every nth rows, but not for this case. I have attached the screenshot of sample table. Rather than hard coding in individual row like in this code, I want to do it in CSS styling.
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 ercial 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 ercial 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>
Any help is appreciated]1
Share Improve this question edited Jul 5, 2017 at 8:22 Bhargav Chudasama 7,1715 gold badges23 silver badges41 bronze badges asked Jul 5, 2017 at 6:54 Coding EnthusiastCoding Enthusiast 1172 silver badges11 bronze badges5 Answers
Reset to default 5You can use "nth-child" to achieve this.
tr:nth-child(6n+1),
tr:nth-child(6n+2),
tr:nth-child(6n+3) {
background: #dddddd;
}
Try with below snippet
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 ercial 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 ercial 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>
You want the alternative color for every three group of rows. Let explain the formula of css tr:nth-child(6n+1),
tr:nth-child(6n+2),
tr:nth-child(6n+3)
where n=0,1,2,3......this tr
selection will start from 1-3, 7-9....
Likewise tr:nth-child(6n+4),
tr:nth-child(6n+5),
tr:nth-child(6n+6)
where n=0,1,2,3......this tr
selection will start from 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 ercial 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 ercial 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>
now you will get alternative color of blue and green as your requirement
You can use javascript for set the background-color
$('document').ready(function(){
$('#table1 tr').each((index, value) => {
if(index % 3 != 0){
value.css({'background-color': '#0000FF'});
}else{
value.css({'background-color': '#00FF00'});
}
});
});
or define two css class
.blue {background-color: #0000FF;}
.green {background-color: #00FF00;}
and assign this class in all tr of table you want
You can separate the header and body and use nth-child concept
<!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 ercial 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 ercial 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>
<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>
版权声明:本文标题:javascript - How to set different background color of every three html table rows in alternate - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742133788a2422280.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论