2014-07-03 15 views
13

Tôi có danh sách này bằng HTML và tôi muốn đặt hàng theo cột. Tôi đã cố gắng sử dụng phao nổi nó mang lại cho tôi điều này:Làm thế nào để float div trong CSS?

EDIT: Chiều cao của những <li> là undefined, nhưng tôi muốn C dưới đây B, E dưới đây E và G dưới đây F mà không cần thay đổi cấu trúc và thay đổi thứ tự. Tôi không muốn sử dụng vị trí tuyệt đối. Tôi tự hỏi nếu có các giải pháp khác.

HTML:

<ul> 
    <li class="item">A</li> 
    <li class="item">B</li> 
    <li class="item">C</li> 
    <li class="item">D</li> 
    <li class="item">E</li> 
    <li class="item">F</li> 
    <li class="item">G</li> 
<ul> 

OUTPUT (sử dụng float: left; width: 240px; border-left: 1px solid #EEE):

enter image description here

Những gì tôi muốn là giống như dưới đây, mà không thay đổi HTML vì Tôi đã sử dụng thứ này ructure để làm cho đáp ứng.

enter image description here

Có thể không?

+0

Bạn có biết chiều rộng và/hoặc chiều cao của hộp không? – panther

+4

Nó không rõ ràng (với tôi ít nhất) những gì các quy tắc là ở đây - tại sao B không thuộc A chẳng hạn? Bạn có thể mô tả bằng lời nói dòng chảy nên đi không? – CupawnTae

+1

làm thế nào về 'float: right'? bạn sẽ phải thay đổi thứ tự 'li' có thể nhưng không phải cấu trúc (như [this] (http://jsfiddle.net/68pKt/1/)). Mặc dù tôi có xu hướng đồng ý với nhận xét bên dưới. – Harry

Trả lời

25

Bạn có thể sử dụng CSS cột và lề dưới trên thẻ LI đầu tiên, like this.

ul { 
    column-count:4; 
    padding:0; 
    column-rule: solid lightgray 1px; 
} 

li { 
    display:inline-block; 
    width:100%; 
} 

li:before {/* demo purpose to set an height to lis */ 
    content:''; 
    float:left; 
    padding-top:50%; 
} 

li:first-of-type { 
    margin-bottom:50%; 
} 

Bạn có thể cần tiền tố JavaScript hoặc thêm tiền tố của nhà cung cấp theo cách thủ công.

+0

Tôi chỉ thêm một nút nữa "H". kết quả không tốt. –

+5

+1. Brilliant :) – Harry

+0

Thật tuyệt vời! Khùng ! Chính xác những gì tôi muốn. Có một giải pháp cho IE8? – Steffi

Các vấn đề liên quan