ホームページ >ウェブフロントエンド >CSSチュートリアル >最新のブラウザと従来のブラウザで順序なしリストを 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 && 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 サイトの他の関連記事を参照してください。