Допустим, у меня есть этот 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)?
элементов или это невозможно? Если вы уверены, что это невозможно, это приемлемый ответ.