使用下面的HTML,将列表显示为两列的最简单方法是什么?
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
</ul>
想要显示:
A B
C D
E
解决方案需要与Internet Explorer兼容。
使用下面的HTML,将列表显示为两列的最简单方法是什么?
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
</ul>
想要显示:
A B
C D
E
解决方案需要与Internet Explorer兼容。
当前回答
我试着把这作为评论发布,但不能让列显示正确(根据你的问题)。
你需要:
A B
C D
E
... 但作为解决方案的答案将返回:
A D
B E
C
... 所以要么答案不正确,要么问题不正确。
一个非常简单的解决方案是设置<ul>的宽度,然后浮动并设置<li>项的宽度,如下所示
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
</ul>
ul{
width:210px;
}
li{
background:green;
float:left;
height:100px;
margin:0 10px 10px 0;
width:100px;
}
li:nth-child(even){
margin-right:0;
}
例如http://jsfiddle.net/Jayx/Qbz9S/1/
如果你的问题是错误的,那么前面的答案适用(与JS修复缺乏IE支持)。
其他回答
在updateColumns()中需要if (column >= columns.length)而不是if (column > columns.length)来列出所有元素(例如跳过C),因此:
function updateColumns(){
column = 0;
columnItems.each(function(idx, el){
if (column >= columns.length){
column = 0;
}
console.log(column, el, idx);
$(columns.get(column)).append(el);
column += 1;
});
}
http://jsfiddle.net/e2vH9/1/
上面答案中的遗留解决方案不适合我,因为我想影响页面上的多个列表,而答案假设一个列表加上它使用了相当多的全局状态。在这种情况下,我想改变<section class="list-content">中的每个列表:
const columns = 2;
$("section.list-content").each(function (index, element) {
let section = $(element);
let items = section.find("ul li").detach();
section.find("ul").detach();
for (let i = 0; i < columns; i++) {
section.append("<ul></ul>");
}
let lists = section.find("ul");
for (let i = 0; i < items.length; i++) {
lists.get(i % columns).append(items[i]);
}
});
与引导……这个答案(https://stackoverflow.com/a/23005046/1128742)让我想到了这个解决方案:
<ul class="list-unstyled row">
<li class="col-xs-6">Item 1</li>
<li class="col-xs-6">Item 2</li>
<li class="col-xs-6">Item 3</li>
</ul>
http://jsfiddle.net/patrickbad767/472r0ynf/
我试着把这作为评论发布,但不能让列显示正确(根据你的问题)。
你需要:
A B
C D
E
... 但作为解决方案的答案将返回:
A D
B E
C
... 所以要么答案不正确,要么问题不正确。
一个非常简单的解决方案是设置<ul>的宽度,然后浮动并设置<li>项的宽度,如下所示
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
</ul>
ul{
width:210px;
}
li{
background:green;
float:left;
height:100px;
margin:0 10px 10px 0;
width:100px;
}
li:nth-child(even){
margin-right:0;
}
例如http://jsfiddle.net/Jayx/Qbz9S/1/
如果你的问题是错误的,那么前面的答案适用(与JS修复缺乏IE支持)。
你可以很容易地用jQuery-Columns Plugin来做到这一点,例如,用一个。mylist类来分割一个ul
$('.mylist').cols(2);
下面是jsfiddle的一个实例
我喜欢这个比CSS更好,因为在CSS解决方案中,不是所有东西都垂直对齐到顶部。