Diciamo che ho questo 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>
e questo CSS:
li { text-align:center; display:inline-block; padding:0.1em 1em }
img { width:64px; display:block; margin:0 auto }
Il risultato può essere visto qui: http://jsfiddle.net/YMN7U/1/
Ora immagina di voler dividere questo in tre colonne, l'equivalente di iniettare un <br>
dopo il terzo <li>
. (In realtà farlo sarebbe semanticamente e sintatticamente non valido.)
So come selezionare il terzo <li>
in CSS, ma come posso forzare un'interruzione di riga dopo di esso? Questo non funziona:
li:nth-child(4):after { content:"xxx"; display:block }
So anche che questo caso particolare è possibile utilizzando float
invece di inline-block
, ma non mi interessa utilizzare le soluzioni float
. So anche che con blocchi a larghezza fissa questo è possibile impostando la larghezza sul genitore ul
a circa 3 volte quella larghezza; Non mi interessa questa soluzione. So anche che potrei usare display:table-cell
se volessi colonne reali; Non mi interessa questa soluzione. Sono interessato alla possibilità di forzare una pausa all'interno del contenuto in linea.
Modifica : per essere chiari, sono interessato alla "teoria", non alla soluzione di un problema particolare. Il CSS può iniettare un'interruzione di riga nel mezzo di display:inline(-block)?
elementi o è impossibile? Se sei sicuro che sia impossibile, questa è una risposta accettabile.