Angenommen, ich habe diesen HTML-Code:
<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>
und dieses CSS:
li { text-align:center; display:inline-block; padding:0.1em 1em }
img { width:64px; display:block; margin:0 auto }
Das Ergebnis ist hier zu sehen: http://jsfiddle.net/YMN7U/1/
Stellen Sie sich nun vor, ich möchte dies in drei Spalten aufteilen, was einer Injektion <br>
nach der dritten entspricht <li>
. (Eigentlich wäre das semantisch und syntaktisch ungültig.)
Ich weiß, wie man den dritten <li>
in CSS auswählt , aber wie erzwinge ich einen Zeilenumbruch danach? Das funktioniert nicht:
li:nth-child(4):after { content:"xxx"; display:block }
Ich weiß auch, dass dieser spezielle Fall durch Verwenden von float
anstelle von möglich ist inline-block
, aber ich bin nicht an Lösungen interessiert, die verwendenfloat
. Ich weiß auch, dass dies bei Blöcken mit fester Breite möglich ist, indem die Breite des übergeordneten Elements ul
auf etwa das Dreifache dieser Breite eingestellt wird. Diese Lösung interessiert mich nicht. Ich weiß auch, dass ich verwenden könnte, display:table-cell
wenn ich echte Spalten wollte; Diese Lösung interessiert mich nicht. Ich bin an der Möglichkeit interessiert, eine Pause in Inline-Inhalten zu erzwingen.
Bearbeiten : Um klar zu sein, ich interessiere mich für "Theorie", nicht die Lösung für ein bestimmtes Problem. Kann CSS einen Zeilenumbruch in die Mitte von display:inline(-block)?
Elementen einfügen oder ist dies unmöglich? Wenn Sie sicher sind, dass dies unmöglich ist, ist dies eine akzeptable Antwort.