当前位置: 首页 > 面试题库 >

如何在两列中显示无序列表?

公西承
2023-03-14
问题内容

使用以下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上运行。


问题答案:

现代浏览器

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

CSS:

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

旧版浏览器

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

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;
    });
}


 类似资料:
  • 问题内容: 我有一个要在垂直约束的空间中放置的物品的清单: 由于我不希望列表的高度超过特定的高度,但是我可以自由地将其水平扩展,因此我想将列表分为几列,如下所示: 或者,或者(在我看来,顺序并不重要) css属性允许将列表分成几列,但只接受固定数量的列。我不知道我要拥有的项目数(可以从1增加到40以上),因此,如果我将列数设置为3,则任何包含6个以上项目的列表都将过高,并且如果只有4个项目,则只有

  • 问题内容: 我有一个Android应用程序,它显示一个网格视图,该网格视图显示: 1个 2 3 4 目前正在运行,但是我想显示网格的foreach行,其中2列具有2维数组的值(类似于ASP.Net中的GridView-作为数据源-)。 我想展示: 1 | 人1 2 | 人2 3 | 人3 4 | 人4 任何想法? 问题答案: 是否必须是网格视图?ListView可以工作吗? 我编写了一个ListV

  • 问题内容: 我需要帮助。有什么办法可以在css / scss中显示逆序列表?类似于以下内容: 问题答案: 您可以旋转父元素,然后旋转子元素。 或者,您可以将flex框与 属性一起使用 。 尽管从技术上讲这并不是颠倒顺序,但您也可以将其 与伪元素一起使用。

  • 假设一个程序生成多个线程来执行与不同版本的对象交互的相同类型的序列。如何在序列图中对其建模? 假设一个线程被复制n次,然后这个线程对对象a、B和C执行一些操作n次。如何在序列图中显示它?

  • 问题内容: 我需要居中排列一个宽度未知的无序列表,同时仍然保持列表项对齐。 获得与以下相同的结果: HTML CSS 除了我没有父母div。无法使用,因为我没有固定的宽度。不起作用,因为列表项将不再保持对齐。那么,如何在保持s对齐的同时居中(没有父div包装器)呢? 编辑 :也许我的措辞是不是最好的…第一个代码块已经工作…我需要的是做 不 的包装,如果这当然是可能的。浮动花样?伪元素技巧?一定有办

  • 问题内容: 我正在尝试建立我的第一个响应式布局。我想以垂直线显示列表项,具体取决于宽度。 如果浏览器调整大小,我希望它成为 有人能帮我吗?我已经尝试了几个小时,却什么也没得到。我试过使用表,但我也不能那样做。 问题答案: 使用 CSS3 列可以很容易地做到这一点。这是一个示例,HTML: