我找到了一种方法......仅使用CSS,使用了第n个子选择器。 (这可能会在旧浏览器上遇到麻烦)。
下面是相关的CSS:
ul {
white-space: nowrap;
margin: 0;
padding: 0;
margin-bottom: 100px; /* space the two demos apart */
}
li {
width: 180px;
height: 30px;
background-color: rgba(0,0,255,.5);
color: white;
padding: 5px;
margin: 0px;
border-radius: 8px;
font-family: Helvetica;
font-size: 24px;
line-height: 30px;
display: inline-block;
}
/******************************************/
/* N = 2 */
/******************************************/
ul.rows2 {
margin-left: 180px; /* li.width * (N-1) */
}
ul.rows2 li {
margin-left: -180px; /* -(li.width * (N-1)) */
}
ul.rows2 li:nth-child(even) {
background-color: rgba(255,0,255,.5);
position: relative;
top: 50px; /* li.height + vertical spacing */
left: -195px; /* -(li.width + horizontal spacing */
margin-left: 0px;
}
/******************************************/
/* N = 3 */
/******************************************/
ul.rows3 {
margin-left: 360px; /* li.width * (N-1) */
}
ul.rows3 li {
margin-left: 0px;
}
ul.rows3 li:nth-child(3n+1) { /* top */
margin-left: -360px; /* -(li.width * (N-1)) */
}
ul.rows3 li:nth-child(3n+2) { /* second */
background-color: rgba(255,0,0,.5);
position: relative;
top: 50px; /* li.height + vertical spacing */
left: -195px; /* -(li.width + horizontal spacing */
}
ul.rows3 li:nth-child(3n+3) { /* bottom */
background-color: rgba(255,0,255,.5);
position: relative;
top: 100px; /* 2*(li.height + vertical spacing */
left: -390px; /* -2*(li.width + horizontal spacing */
}