使用下面的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兼容。
当前回答
这可以使用父div上的column-count css属性来实现,
like
column-count:2;
查看更多细节。
如何使浮动DIV列表出现在列,而不是行
其他回答
在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/
我试着把这作为评论发布,但不能让列显示正确(根据你的问题)。
你需要:
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支持)。
这是最简单的方法。CSS。
为ul元素添加width。 添加display:inline-block和新列的宽度(应该小于ul宽度的一半)。
ul.list {
width: 300px;
}
ul.list li{
display:inline-block;
width: 100px;
}
<ul class="list">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
</ul>
我在看@jaider的解决方案,但我提供了一个稍微不同的方法,我认为更容易使用,我已经看到跨浏览器都很好。
ul{
list-style-type: disc;
-webkit-columns: 2;
-moz-columns: 2;
columns: 2;
list-style-position: inside;//this is important addition
}
在默认情况下,无序列表显示项目符号的位置,但在一些浏览器中,这将导致一些显示问题,基于浏览器的布局你的网站的方式。
要让它以以下格式显示:
A B
C D
E
等等,使用以下方法:
ul li{
float: left;
width: 50%;//helps to determine number of columns, for instance 33.3% displays 3 columns
}
ul{
list-style-type: disc;
}
这将解决显示列的所有问题。祝你一切顺利,谢谢@jaider,因为你的回复帮助我发现了这一点。
虽然我发现加布里埃尔在一定程度上回答了工作,但我确实发现了以下问题,当我试图垂直排列列表时(第一个ul a - d和第二个ul E-G):
当ul中有偶数个li时,它并没有均匀地分布在ul中 在ul中使用数据列似乎工作得不太好,我不得不为3列放4,即使这样,它仍然只是将li扩展到由JS生成的ul的2个
我已经修改了JQuery,希望上面的情况不会发生。
(function ($) {
var initialContainer = $('.customcolumns'),
columnItems = $('.customcolumns li'),
columns = null,
column = 0;
function updateColumns() {
column = 0;
columnItems.each(function (idx, el) {
if ($(columns.get(column)).find('li').length >= (columnItems.length / initialContainer.data('columns'))) {
column += 1;
}
$(columns.get(column)).append(el);
});
}
function setupColumns() {
columnItems.detach();
while (column++ < initialContainer.data('columns')) {
initialContainer.clone().insertBefore(initialContainer);
column++;
}
columns = $('.customcolumns');
updateColumns();
}
$(setupColumns);
})(jQuery);
.customcolumns {
float: left;
position: relative;
margin-right: 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<ul class="customcolumns" data-columns="3">
<li>A</li>
<li>B</li>
<li>C</li>
<li>D</li>
<li>E</li>
<li>F</li>
<li>G</li>
<li>H</li>
<li>I</li>
<li>J</li>
<li>K</li>
<li>L</li>
<li>M</li>
</ul>
</div>