使用下面的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兼容。


当前回答

这对我很管用。 最好的解决方案是因为一行中的单元格具有相同的高度而不考虑内容吗

申{ 显示屏:网格; 格栅:重复(2,1 fr); list-style-position:内心; list-style-type:郎; 的 li {border:固体1px;的 <德> <li>asdasd asdasd asdasd asdasd adasdasd adasdadasd adadas dasdadasdasd asd </li> < li > B < / li > < li > C < / li > < li > D < / li > < li > E < / li > < /德>

其他回答

在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/

我在看@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,因为你的回复帮助我发现了这一点。

现代浏览器

利用css3列模块来支持您正在寻找的内容。

http://www.w3schools.com/cssref/css3_pr_columns.asp

CSS:

ul {
  columns: 2;
  -webkit-columns: 2;
  -moz-columns: 2;
}

http://jsfiddle.net/HP85j/8/

遗留的浏览器

不幸的是,对于IE的支持,你将需要一个涉及JavaScript和dom操作的代码解决方案。这意味着每当列表的内容发生更改时,您都需要执行将列表重新排序为列并重新打印的操作。为了简洁起见,下面的解决方案使用jQuery。

http://jsfiddle.net/HP85j/19/

HTML:

<div>
    <ul class="columns" data-columns="2">
        <li>A</li>
        <li>B</li>
        <li>C</li>
        <li>D</li>
        <li>E</li>
        <li>F</li>
        <li>G</li>
    </ul>
</div>

JavaScript:

(function($){
    var initialContainer = $('.columns'),
        columnItems = $('.columns li'),
        columns = null,
        column = 1; // account for initial column
    function updateColumns(){
        column = 0;
        columnItems.each(function(idx, el){
            if (idx !== 0 && idx > (columnItems.length / columns.length) + (column * idx)){
                column += 1;
            }
            $(columns.get(column)).append(el);
        });
    }
    function setupColumns(){
        columnItems.detach();
        while (column++ < initialContainer.data('columns')){
            initialContainer.clone().insertBefore(initialContainer);
            column++;
        }
        columns = $('.columns');
    }

    $(function(){
        setupColumns();
        updateColumns();
    });
})(jQuery);

CSS:

.columns{
    float: left;
    position: relative;
    margin-right: 20px;
}

编辑:

如下所示,这将使列的顺序如下:

A  E
B  F
C  G
D

而OP要求匹配如下的变体:

A  B
C  D
E  F
G

要实现这个变体,你只需将代码更改如下:

function updateColumns(){
    column = 0;
    columnItems.each(function(idx, el){
        if (column > columns.length){
            column = 0;
        }
        $(columns.get(column)).append(el);
        column += 1;
    });
}

假设多列布局可以很好地与居中布局,证明网格布局与水平间隙。

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>

这对我很管用。 最好的解决方案是因为一行中的单元格具有相同的高度而不考虑内容吗

申{ 显示屏:网格; 格栅:重复(2,1 fr); list-style-position:内心; list-style-type:郎; 的 li {border:固体1px;的 <德> <li>asdasd asdasd asdasd asdasd adasdasd adasdadasd adadas dasdadasdasd asd </li> < li > B < / li > < li > C < / li > < li > D < / li > < li > E < / li > < /德>