Hãy nói rằng tôi có HTML này:
<h3>Features</h3>
<ul>
<li><img src="alphaball.png">Smells Good</li>
<li><img src="alphaball.png">Tastes Great</li>
<li><img src="alphaball.png">Delicious</li>
<li><img src="alphaball.png">Wholesome</li>
<li><img src="alphaball.png">Eats Children</li>
<li><img src="alphaball.png">Yo' Mama</li>
</ul>
và CSS này:
li { text-align:center; display:inline-block; padding:0.1em 1em }
img { width:64px; display:block; margin:0 auto }
Kết quả có thể xem tại đây: http://jsfiddle.net/YMN7U/1/
Bây giờ hãy tưởng tượng rằng tôi muốn chia nó thành ba cột, tương đương với việc tiêm a <br>
sau cột thứ ba <li>
. (Trên thực tế, việc đó sẽ không hợp lệ về mặt ngữ nghĩa và cú pháp.)
Tôi biết cách chọn thứ ba <li>
trong CSS, nhưng làm cách nào để buộc ngắt dòng sau nó? Điều này không hoạt động:
li:nth-child(4):after { content:"xxx"; display:block }
Tôi cũng biết rằng trường hợp cụ thể này có thể bằng cách sử dụng float
thay vì inline-block
, nhưng tôi không quan tâm đến các giải pháp sử dụng float
. Tôi cũng biết rằng với các khối có chiều rộng cố định, điều này có thể thực hiện được bằng cách đặt chiều rộng trên bố mẹ ul
thành khoảng 3x chiều rộng đó; Tôi không quan tâm đến giải pháp này. Tôi cũng biết rằng tôi có thể sử dụng display:table-cell
nếu tôi muốn các cột thực sự; Tôi không quan tâm đến giải pháp này. Tôi quan tâm đến khả năng buộc phải nghỉ trong nội dung nội tuyến.
Chỉnh sửa : Để rõ ràng, tôi quan tâm đến 'lý thuyết', không phải là giải pháp cho một vấn đề cụ thể. CSS có thể tạo ra một ngắt dòng ở giữa các display:inline(-block)?
phần tử, hoặc là không thể? Nếu bạn chắc chắn rằng điều đó là không thể, đó là một câu trả lời chấp nhận được.