本問題探討了跨兩列呈現無序列表的方法,特別是用於顯示在Internet Explorer 等舊版瀏覽器中。
在現代瀏覽器中,CSS3 columns 模組提供對建立列的支援。透過利用此模組,您可以實現所需的佈局,如下所示:
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; }); }
以上是如何在現代和傳統瀏覽器中以兩列顯示無序列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!