Скажімо, у мене є цей HTML:
<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>
і цей CSS:
li { text-align:center; display:inline-block; padding:0.1em 1em }
img { width:64px; display:block; margin:0 auto }
Результат можна побачити тут: http://jsfiddle.net/YMN7U/1/
Тепер уявіть, що я хочу розбити це на три стовпці, еквівалент введення а <br>
після третього <li>
. (Насправді це було б семантично і синтаксично недійсно.)
Я знаю, як вибрати третій <li>
у CSS, але як змусити переривати рядок після нього? Це не працює:
li:nth-child(4):after { content:"xxx"; display:block }
Я також знаю, що цей конкретний випадок можливий за допомогою float
замість inline-block
, але мене не цікавлять рішення, що використовують float
. Я також знаю, що з блоками фіксованої ширини це можливо, встановивши ширину на батьківському рівні ul
приблизно в 3 рази більше цієї ширини; Мене це рішення не цікавить. Я також знаю, що я міг би використовувати, display:table-cell
якби хотів справжні колонки; Мене це рішення не цікавить. Мене цікавить можливість примусити перерву у вбудованому вмісті.
Редагувати : Щоб зрозуміти, мене цікавить «теорія», а не рішення певної проблеми. Чи може CSS ввести рядок розриву посередині display:inline(-block)?
елементів, або це неможливо? Якщо ви впевнені, що це неможливо, це прийнятна відповідь.