Trình duyệt hiện đại
tận dụng mô-đun cột css3 để hỗ trợ những gì bạn đang tìm kiếm.
http://www.w3schools.com/cssref/css3_pr_columns.asp
CSS:
ul {
columns: 2;
-webkit-columns: 2;
-moz-columns: 2;
}
http://jsfiddle.net/HP85j/8/
Trình duyệt kế thừa
Thật không may cho hỗ trợ IE, bạn sẽ cần một giải pháp mã liên quan đến thao tác JavaScript và dom. Điều này có nghĩa là bất cứ khi nào nội dung của danh sách thay đổi, bạn sẽ cần thực hiện thao tác sắp xếp lại danh sách thành các cột và in lại. Giải pháp dưới đây sử dụng jQuery cho ngắn gọn.
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;
}
BIÊN TẬP:
Như được chỉ ra dưới đây sẽ sắp xếp các cột như sau:
A E
B F
C G
D
trong khi OP yêu cầu một biến thể khớp với các điều sau:
A B
C D
E F
G
Để thực hiện biến thể, bạn chỉ cần thay đổi mã thành như sau:
function updateColumns(){
column = 0;
columnItems.each(function(idx, el){
if (column > columns.length){
column = 0;
}
$(columns.get(column)).append(el);
column += 1;
});
}