Скажем, у меня есть этот 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/
Теперь представьте, что я хочу разбить это на три столбца, что эквивалентно инъекции a <br>
после третьего <li>
. (Фактически это будет семантически и синтаксически недействительным.)
Я знаю, как выбрать третий <li>
в CSS, но как я могу заставить его сломать строку? Это не работает:
li:nth-child(4):after { content:"xxx"; display:block }
Я также знаю, что этот конкретный случай возможен, используя float
вместо inline-block
, но меня не интересуют решения, использующие float
. Я также знаю, что с блоками фиксированной ширины это возможно, установив ширину на родительском ul
примерно до 3x этой ширины; Меня это не интересует. Я также знаю, что я мог бы использовать display:table-cell
, если бы мне нужны реальные столбцы; Меня это не интересует. Меня интересует возможность принудительного прорыва внутри встроенного контента.
Изменить. Чтобы быть ясным, меня интересует "теория", а не решение конкретной проблемы. Может ли CSS вставить разрыв строки в середине элементов display:inline(-block)?
, или это невозможно? Если вы уверены, что это невозможно, это приемлемый ответ.