ホームページ >ウェブフロントエンド >CSSチュートリアル >最新のブラウザと従来のブラウザで順序なしリストを 2 列で表示するにはどうすればよいですか?

最新のブラウザと従来のブラウザで順序なしリストを 2 列で表示するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-22 22:58:09118ブラウズ

How to Display an Unordered List in Two Columns Across Modern and Legacy Browsers?

順序なしリストを 2 列で表示する方法

はじめに

この質問では、特に表示のために、2 つの列にわたって順序なしリストを表示する方法について説明します。 Internet Explorer などの従来のブラウザでは。

モダンブラウザ

最新のブラウザでは、CSS3 列モジュールは列の作成をサポートします。このモジュールを利用すると、次のように希望のレイアウトを実現できます。

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

レガシー ブラウザ

レガシー ブラウザの場合、コンテンツが変更されたときに DOM 操作を伴う JavaScript ベースのソリューションが必要です。このソリューションでは 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 &amp;&amp; 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

元の質問では、代わりに次のような順序が要求されました:

A  B
C  D
E  F
G

このバリアントでは、次の JavaScript コードを調整します:

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

以上が最新のブラウザと従来のブラウザで順序なしリストを 2 列で表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。