2010-04-26 36 views
16

Tôi có một máy chủ tạo ra html như:UL + CSS cho bố trí lưới

<ul> 
    <li><!-- few nested elements that form a block --></li> 
    <li><!-- few nested elements that form anaother block --></li> 
    <li><!-- etc, X times --></li> 
</ul> 

Tất cả các khối đã được biết đến rộng 200px và chiều cao chưa biết. Tôi muốn <li> được bố trí theo kiểu bảng giống như như thế này: css

alt text

Những gì tôi có bây giờ là sau đây:

li { 
    display: block; 
    width: 200px; 
    float: left; 
    margin: 10px; 
} 

Tất cả là tốt ngoại trừ việc các cột không được bình đẳng Chiều cao. Và trong ví dụ trên khối # 4 “cướp” ở vị trí # 1 và kết quả không phải là những gì tôi đang cố gắng để đạt được:

alt text

Có thuần CSS qua trình duyệt như vậy sẽ cho phép lưới cách bố trí tôi muốn và sẽ không thực thi thay đổi đánh dấu?

Trả lời

22

Inline blocks có thể hữu ích ở đây.

+0

+1, nhưng hãy nhớ IE7, người chỉ cho phép chặn nội tuyến cho các yếu tố nội tuyến tự nhiên. – ANeves

+1

Liên kết tuyệt vời! Chính xác những gì tôi cần. – nkrkv

+0

Bạn rất có thể sẽ gặp phải sự cố với không gian trắng trong dòng. Trong trường hợp này, hãy xem chuỗi này tại doctype.com: http://doctype.com/csss-inlineblock-white-space-between-items – Boldewyn

0

Lựa chọn 1: Cung cấp cho họ cao rõ ràng

Tùy chọn 2: Sử dụng nth-child (trong đó có hỗ trợ giới hạn)

4

Trong ví dụ của bạn, bạn dường như muốn cho mỗi hàng cùng một chiều cao của li lớn nhất ở chỗ hàng. Nếu chiều cao này là biến mà bạn muốn chỉ có thể với nth-child:

li:nth-child(3n+0) { clear: left; } 
Các vấn đề liên quan