Powiedzmy, że mam ten kod 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>
i ten CSS:
li { text-align:center; display:inline-block; padding:0.1em 1em }
img { width:64px; display:block; margin:0 auto }
Wynik można zobaczyć tutaj: http://jsfiddle.net/YMN7U/1/
Teraz wyobraź sobie, że chcę rozbić to na trzy kolumny, co odpowiada wstrzyknięciu <br>
po trzeciej <li>
. (W rzeczywistości byłoby to nieprawidłowe semantycznie i składniowo).
Wiem, jak wybrać trzeci <li>
w CSS, ale jak wymusić przerwanie linii po nim? To nie działa:
li:nth-child(4):after { content:"xxx"; display:block }
Wiem też, że ten konkretny przypadek jest możliwy przy użyciu float
zamiast inline-block
, ale nie interesują mnie rozwiązania float
. Wiem również, że w przypadku bloków o stałej szerokości jest to możliwe poprzez ustawienie szerokości nadrzędnej ul
na około 3x tę szerokość; Nie jestem zainteresowany tym rozwiązaniem. Wiem też, że mógłbym użyć, display:table-cell
gdybym chciał prawdziwych kolumn; Nie jestem zainteresowany tym rozwiązaniem. Interesuje mnie możliwość wymuszenia przerwy w treści wbudowanej.
Edycja : Dla jasności interesuje mnie „teoria”, a nie rozwiązanie konkretnego problemu. Czy CSS może wprowadzić przerwanie linii pośrodku display:inline(-block)?
elementów, czy jest to niemożliwe? Jeśli masz pewność, że jest to niemożliwe, jest to akceptowalna odpowiedź.