Disons que j'ai ce 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>
et ce CSS:
li { text-align:center; display:inline-block; padding:0.1em 1em }
img { width:64px; display:block; margin:0 auto }
Le résultat peut être vu ici: http://jsfiddle.net/YMN7U/1/
Imaginez maintenant que je veux diviser cela en trois colonnes, l'équivalent d'injecter un <br>
après le troisième <li>
. (En fait, cela serait invalide sémantiquement et syntaxiquement.)
Je sais comment sélectionner le troisième <li>
en CSS, mais comment puis-je forcer un saut de ligne après lui? Cela ne fonctionne pas:
li:nth-child(4):after { content:"xxx"; display:block }
Je sais également que ce cas particulier est possible en utilisant float
au lieu de inline-block
, mais je ne suis pas intéressé par les solutions en utilisant float
. Je sais également qu'avec des blocs à largeur fixe, cela est possible en définissant la largeur sur le parent ul
à environ 3 fois cette largeur; Je ne suis pas intéressé par cette solution. Je sais aussi que je pourrais utiliser display:table-cell
si je voulais de vraies colonnes; Je ne suis pas intéressé par cette solution. Je suis intéressé par la possibilité de forcer une rupture dans le contenu en ligne.
Edit : Pour être clair, je m'intéresse à la «théorie», pas à la solution à un problème particulier. Le CSS peut-il injecter un saut de ligne au milieu des display:inline(-block)?
éléments, ou est-ce impossible? Si vous êtes certain que c'est impossible, c'est une réponse acceptable.