次のような 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/
ここで、これを 3 つの列に分割するとします。これは、<br>
3 番目の の後にを挿入するのと同じです<li>
。(実際にそうすることは意味的にも構文的にも無効になります。)
CSS で3 番目を選択する方法はわかっています<li>
が、その後に強制的に改行するにはどうすればよいでしょうか。これは機能しません。
li:nth-child(4):after { content:"xxx"; display:block }
また、この特定のケースはfloat
の代わりにを使用することで可能であることも知っていますinline-block
が、 を使用するソリューションには興味がありませんfloat
。また、固定幅のブロックでは、親の幅をul
その幅の約 3 倍に設定することでこれが可能であることも知っていますが、このソリューションには興味がありません。また、実際の列が必要な場合は を使用できることも知っていますがdisplay:table-cell
、このソリューションには興味がありません。インライン コンテンツ内で強制的に改行する可能性に興味があります。
編集明確に言うと、私が興味を持っているのは「理論」であり、特定の問題の解決策ではありません。CSS は要素の途中に改行を挿入できますかdisplay:inline(-block)?
、それとも不可能ですか?それが不可能であると確信しているのであれば、それは受け入れられる答えです。
ベストアンサー1
インライン LI 要素では動作するようにできました。残念ながら、LI 要素がインライン ブロックの場合は動作しません。
ライブデモ: http://jsfiddle.net/dWkdp/
または、要約版:
li {
display: inline;
}
li:nth-child(3):after {
content: "\A";
white-space: pre;
}