使用下面的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列表出现在列,而不是行
其他回答
假设多列布局可以很好地与居中布局,证明网格布局与水平间隙。
p { text-align: justify; } ul { display: grid; grid-template-columns: repeat(3, auto); justify-content: space-around; gap: 0 3em; text-transform: capitalize; } <p>In publishing and graphic design, Lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document or a typeface without relying on meaningful content. Lorem ipsum may be used as a placeholder before final copy is available.</p> <ul> <li>one</li> <li>two</li> <li>three</li> <li>four</li> <li>five</li> <li>six</li> <li>seven</li> <li>eight</li> <li>nine</li> <li>ten</li> </ul> <p>In publishing and graphic design, Lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document or a typeface without relying on meaningful content. Lorem ipsum may be used as a placeholder before final copy is available.</p>
上面答案中的遗留解决方案不适合我,因为我想影响页面上的多个列表,而答案假设一个列表加上它使用了相当多的全局状态。在这种情况下,我想改变<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]);
}
});
你可以很容易地用jQuery-Columns Plugin来做到这一点,例如,用一个。mylist类来分割一个ul
$('.mylist').cols(2);
下面是jsfiddle的一个实例
我喜欢这个比CSS更好,因为在CSS解决方案中,不是所有东西都垂直对齐到顶部。
这里有一个可能的解决方案:
代码片段:
ul { 宽度:760 px; margin-bottom: 20 px; 溢出:隐藏; Border-top: 1px实心#ccc; } 李{ 行高:1.5 em; Border-bottom: 1px实体#ccc; 浮:左; 显示:内联; } #双里{ 宽度:50%; } < ul id = "双" > <李>第一李< / > <李>第二李< / > <李>第三李< / > <李>第四李< / > < / ul >
这就完成了。 对于3列使用里宽为33%,对于4列使用25%,依此类推。
在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/