我一直非常成功地使用DIV创建表并使列交替使用颜色。但是,我正在尝试交替行。我知道我很接近,但我现在正撞在墙上。有很多代码,所以我创建了一个包含代码的jsfiddle.net项目,你可以看到我得到的结果。
这是HTML:
<body>
<div>
<div class="list-table">
<div class="title top">Membership List</div>
<div class="heading-row">
<div class="col-heading-1 col-background">Mbr ID</div>
<div class="col-heading-2 col-background">Member Name</div>
<div class="col-heading-3 col-background">Member Email</div>
<div class="col-heading-4 col-background">Action</div>
</div>
<div class="clear"></div>
<div class="detail">
<div class="col-1">1</div>
<div class="col-2">John Doe</div>
<div class="col-3">jd@johndoe.com</div>
<div class="col-4">Delete</div>
<div class="col-5">Edit</div>
</div>
<div class="clear"></div>
<div class="detail">
<div class="col-1">2</div>
<div class="col-2">John Wayne</div>
<div class="col-3">jw@jw.com</div>
<div class="col-4">Delete</div>
<div class="col-5">Edit</div>
</div>
<div class="clear"></div>
<div class="detail">
<div class="col-1">3</div>
<div class="col-2">Sally Smith</div>
<div class="col-3">sally@sallysmith.com</div>
<div class="col-4">Delete</div>
<div class="col-5">Edit</div>
</div>
<div class="clear"></div>
<div class="title bottom">End of data</div>
</div>
</div>
这是CSS:
.list-table {
width: 800px;
margin: 0 auto;
}
.list-table .title {
width: 100%;
font-size: large;
font-weight: bolder;
text-align: center;
/* IE10 Consumer Preview */
background-image: -ms-linear-gradient(top, #2AA6FF 0%, #A5F0EF 50%, #2AA6FF 100%);
/* Mozilla Firefox */
background-image: -moz-linear-gradient(top, #2AA6FF 0%, #A5F0EF 50%, #2AA6FF 100%);
/* Opera */
background-image: -o-linear-gradient(top, #2AA6FF 0%, #A5F0EF 50%, #2AA6FF 100%);
/* Webkit (Safari/Chrome 10) */
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, 2AA6FF), color-stop(0.5, #A5F0EF), color-stop(1, #2AA6FF));
/* Webkit (Chrome 11+) */
background-image: -webkit-linear-gradient(top, #2AA6FF 0%, #A5F0EF 50%, #2AA6FF 100%);
/* W3C Markup, IE10 Release Preview */
background-image: linear-gradient(to bottom, #2AA6FF 0%, #A5F0EF 50%, #2AA6FF 100%);
}
.list-table .top {
border-top-left-radius: 10px;
border-top-right-radius: 10px;
}
.list-table .bottom {
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
}
.list-table .heading-row {
}
.list-table .heading-row .col-heading-1 {
width: 10%;
font-size: small;
text-align: center;
vertical-align: middle;
float: left;
}
.list-table .heading-row .col-heading-2 {
width: 35%;
font-size: small;
text-align: center;
vertical-align: middle;
float: left;
}
.list-table .heading-row .col-heading-3 {
width: 35%;
font-size: small;
text-align: center;
vertical-align: middle;
float: left;
}
.list-table .heading-row .col-heading-4 {
width: 20%;
font-size: small;
text-align: center;
vertical-align: middle;
float: left;
}
.list-table .heading-row .col-background {
/* IE10 Consumer Preview */
background-image: -ms-linear-gradient(top, #808080 0%, #D3D3D3 50%, #808080 100%);
/* Mozilla Firefox */
background-image: -moz-linear-gradient(top, #808080 0%, #D3D3D3 50%, #808080 100%);
/* Opera */
background-image: -o-linear-gradient(top, #808080 0%, #D3D3D3 50%, #808080 100%);
/* Webkit (Safari/Chrome 10) */
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #808080), color-stop(0.5, #D3D3D3), color-stop(1, #808080));
/* Webkit (Chrome 11+) */
background-image: -webkit-linear-gradient(top, #808080 0%, #D3D3D3 50%, #808080 100%);
/* W3C Markup, IE10 Release Preview */
background-image: linear-gradient(to bottom, #808080 0%, #D3D3D3 50%, #808080 100%);
}
.list-table .clear {
clear: both;
}
.list-table .detail {
background-color: #eee;
}
.list-table .detail div:nth-child(odd) {
background-color:#eee;
}
.list-table .detail div:nth-child(even) {
background-color:#fff;
}
.list-table .detail .col-1 {
width: 10%;
text-align: center;
float: left;
}
.list-table .detail .col-2 {
width: 35%;
float: left;
}
.list-table .detail .col-3 {
width: 35%;
float: left;
}
.list-table .detail .col-4 {
width: 10%;
text-align: center;
float: left;
}
.list-table .detail .col-5 {
width: 10%;
text-align: center;
float: left;
}
答案 0 :(得分:2)
我现在在想......好吧......作为一个桌子或者div(但是表格数据值得一张桌子)对于这个答案并不重要:
为什么不在创建html的循环中添加一个类来标记偶数/奇数行? (div class =“detail”vs div class =“detail even”...)
然后用css为你想要的颜色......
.even{background-color: #DDDDAA}
.odd{background-color: #BBBBFF}
答案 1 :(得分:1)
这个解决方案并不完美,但会给你一些合作的东西。将其添加到样式的底部:
.list-table > div:nth-child(4n) {
color: red;
}
这会将每个第4个div的文本颜色设置为红色。这看起来像一个交替的行,因为表中的每个“行”都有一个“clear”div和一个“detail”div。
答案 2 :(得分:1)
我想这正是你要找的。 p>
为了使事情更简单,我已经采取了所有&#39;行&#39;并将其放在称为“行”的容器div中。我还应用了你想要的背景颜色以及保持替代颜色。我已经添加了边距和填充以使颜色变得明显(我知道它看起来很好但是为了说明目的而完成)。
这是我使用的2个CSS类:
.detail {
background-color: Gray;
color: Blue;
height:20px;
width:100%;
padding:25px 0;
}
.rows > div:nth-child(4n) {
background-color:Orange;
color: red;
}
我修改了(只是添加了一个名为row的容器,如前所述)HTML:
<div class="rows">
<div class="clear"></div>
<div class="detail">
<div class="col-1">1</div>
<div class="col-2">John Doe</div>
<div class="col-3">jd@johndoe.com</div>
<div class="col-4">Delete</div>
<div class="col-5">Edit</div>
</div>
..Other 'detail' classes
</div>
您可以在此处查看:http://jsfiddle.net/8bLUH/1/
我的想法是,我已经为您提供了两个名为&#39; detail&#39; (奇数行)和行。 div:nth-child(4n)(偶数行)。您可以在其上应用您想要的任何样式。
希望这有帮助!!!
答案 3 :(得分:0)
您可以使用JQuery,它变得简单:
$(function(){
var count = 0;
var baseColor = true;
$(".detail > div").each(function(){
count++;
if (baseColor){
$(this).css("background-color", "#BCEAEF");
}
if (count > 4){ // 4 is the number of columns - 1
count = 0;
if (baseColor){
baseColor = false;
}
else{
baseColor = true;
}
}
});
});