我正在尝试创建一个水平UL,每行总共显示3个项目。棘手的部分是物品的宽度可以不同。例如:
<ul class="items">
<li>
<input type="checkbox" id="work" />
Work items
</li>
<li>
<input type="checkbox" id="shopping" />
Shopping
</li>
<li>
<input type="checkbox" id="financial" />
Financial Information & Tips
</li>
</ul>
等
我想这样做,所以它基本上就像使用一个表,每行总是显示3个项目,每个项目的复选框始终与文本在同一行。
我该怎么做?
这是我正在使用的当前代码,但它没有均匀显示项目,通常最后一个复选框在第1行结束,文本被推送到下一行。
ul.items
{
text-align: center;
list-style-type: none;
width: 400px;
}
ul.items li
{
display: inline;
}
答案 0 :(得分:14)
尝试使用CSS nth-child
选择器。无论宽度如何都可以工作。
我还删除了您的display:inline
规则,并将其替换为float:left;
。
<强> jsFiddle example 强>
ul.items li:nth-child(3n+4) {
clear:left;
float:left;
}
有关nth-child
的详情,请参阅https://developer.mozilla.org/en-US/docs/CSS/:nth-child
答案 1 :(得分:4)
我喜欢使用float来实现这个
ul.items
{
text-align: center;
list-style-type: none;
width: 400px;
}
ul.items li
{
float: left;
display: inline;
}
.clear { clear: both; }
使用这个html:
<ul class="items">
<li>
<input type="checkbox" id="work" />
Work items
</li>
<li>
<input type="checkbox" id="shopping" />
Shopping
</li>
<li>
<input type="checkbox" id="financial" />
Financial Information & Tips
</li>
<li class="clear"></li>
</ul>