我有像PHP这样的水平动态ul
列表构建:
List1 List2 List3 List4 List5 List6 List7 List8 List9 List10
有没有办法每3个列表创建一个新行?所以,结果将如下所示:
List1 List2 List3
List4 List5 List6
List7 List8 List9
List10
我知道我可以调整ul
宽度,使我的列表看起来像上面那样。
但我想要的是为每3个列表创建新行。 PHP,CSS或JavaScript可以做到这一点吗?有人可以帮忙吗?
答案 0 :(得分:9)
如何 -
li {
width: 33%;
float: left;
list-style: none;
}
将每个li
元素的宽度设置为可用空间的三分之一意味着我们可以在每行上放置三个浮动li
,然后浏览器将下一个推送到新行。
我想您可能会将float: left
语句换成display: inline
以获得相同的效果。
答案 1 :(得分:4)
如果您没有固定大小的列表项,可以使用jQuery轻松完成:
$('li:nth-child(3n)').next().css({'clear': 'both'});
这将获取每个第三个元素,并为下一个元素添加清晰。这就是..无论你的列表项是多大,它都会在每个第3个元素之后接下来到新行。
答案 2 :(得分:1)
您必须设置每个<li>
宽度 - 例如width: 100px;
和<ul>
设置width: 300px
。
ul, li {
margin: 0;
padding: 0;
}
ul {
width: 300px;
}
li {
width: 100px;
float: left;
list-style: none;
}
答案 3 :(得分:1)
正如ПанайотТолев在他的帖子中提到但只有CSS3:
li:nth-child(3n) + li
{
clear:both;
}
选择每个第3个元素并添加一个clear:both到下一个列表元素
答案 4 :(得分:0)
如果你想用PHP而不是css(如@hsz建议的那样),你可以将它分成ul
个,其中最多有3 li
个1} p>
<ul class="...">
<?php
$i = 1;
$array = (/* 10 items */);
foreach ($array as $item) {
if ($i % 3 == 0) { echo '</ul><ul>'; }
echo "<li>{$item}</li>";
$i ++;
}
?></ul>