寻找一种样式列表的方式,它看起来像一个网格。
<div class="name">
<ul>
<li>1</li>
<li>Text</li>
<li>2</li>
<li>Text</li>
<li>3</li>
<li>Text</li>
...
<ul>
在我已经使用过的css中:
.name {
-moz-column-count: 3;
-moz-column-gap: 20px;
-webkit-column-count: 3;
-webkit-column-gap: 20px;
column-count: 3;
column-gap: 20px;
}
现在每个<li>
元素都位于之前的元素之下。
1 3
Text Text
2 4
Text ....
我想要实现以下目标:每隔一个<li>
将与之前的一个1 Text 4 Text 7 Text
2 Text 5 Text 8 Text
3 Text 6 Text 9 Text
配对:
<ul>
如何实现? PS:如果可能的话,无需向<li>
或{{1}}元素添加类。
答案 0 :(得分:1)
我改变了你的代码:
在jsfiddle上看到它
我使用了:nth-of-type
选择器!但我建议你使用table
标签
CSS:
*{
font-family:"Trebuchet MS", Helvetica, sans-serif;
}
.name{
position:relative;
width:90%;
margin:0;
margin-left:5%;
background:#e7e7e7;
padding:0;
}
div.name li{
color:#2E99DB;
width:2%;
display:inline-block;
}
div.name li:nth-of-type(even){
color:#000;
width:21%;
display:inline-block;
}
HTML:
<div class="name">
<ul>
<li>1</li>
<li>Text</li>
<li>2</li>
<li>Text</li>
<li>3</li>
<li>Text</li>
<li>4</li>
<li>Text</li>
<li>5</li>
<li>Text</li>
<li>6</li>
<li>Text</li>
<li>7</li>
<li>Text</li>
<ul>
</div>
注意:为宽度使用更准确的比例...
答案 1 :(得分:0)
你可以用伪类做到这一点,但它真的很hacky,并且不能在IE9下工作(我想你可能不关心,因为你试图使用css列)。无论是修改原始代码还是尝试用一些js改变dom,你都会好得多。
<强>代码:强>
.name {
width: 600px; // set to whatevs. Should work with or without width.
}
li {
list-style: none;
display: block;
float: left;
padding: 1%;
box-sizing: border-box; // need to set this if you want to pad the list items
}
li:nth-child(odd) {
color: #f0f;
width: 1%;
}
li:nth-child(even){
color: #00F;
width: 31.3333%; // using this number as a root since you want three cols
// (33.333%, minus the 2% for width and padding above).
// No matter what you want, make sure total width == 100%
}
li:nth-child(7n){
clear:both; // clear the 7th (or new row) element
}