ページ内に、インラインブロック要素を含む固定幅のコンテナがあり、その後にテキストが続きます。インラインブロック後の改行を防止する
場合によっては、このテキストがコンテナよりも広いことがあります。これが起こると、私はそれを次の行に壊したい(以下の最初の例に見られるように)。
場合によっては、このテキストもコンテナ内に表示するには幅があります。これが起こると、超過分を切り捨てる(overflow: hidden
)ようにします。しかし、これを明白な方法でやってみると、inline-block要素の後に改行が挿入されます(2番目の例のように)。
インラインブロック要素とテキストの最初の文字を<nobr>
要素(3番目の例または同等のラッパーであるwhite-space:nowrap
ラッパー)にまとめることで回避できますが、これは本当に物事について行く醜い方法。これを行うより良い方法はありますか?
.container {
outline: 2px solid blue;
width: 150px;
overflow: hidden;
margin: 10px;
}
.inlineblock {
display: inline-block;
width: 30px; height: 1.5em; vertical-align: middle;
background: gray;
}
<div class="container">
<span class="inlineblock"></span>line breaks only at spaces
</div>
<div class="container">
<span class="inlineblock"></span>widetextwidetextwidetext second line
</div>
<div class="container">
<nobr><span class="inlineblock"></span>w</nobr>idetextwidetextwidetext ugly workaround
</div>
* "または同等の空白:nowrap'ラッパー..." * - なぜそれは醜いのですか?それがそうであるように思える。実際、私はそのフレーズを見落とし、そのアプローチを示唆する答えを提示しようとしていました。 ''タグは同じソリューションの1997年版です(https://developer.mozilla.org/nl/docs/Web/HTML/Element/nobr)ので、私はそれを選択しますCSSのバージョン。 –
GolezTrol
'.container'に' white-space:nowrap; 'を追加しないだけで探していますか?または、私が何かを逃している –
@GolezTrol私は、テキストの最初の文字が残りの部分から分割されている必要があるため、 "醜い"解決策と考えています。また、テキストが別の要素にラップされる必要がある場合(たとえばリンクの場合)は不可能です。 – duskwuff