30.04.13に編集:IE10は記述された動作を取り除いたようで、この動作を現在監視できる唯一のブラウザーはFirefoxです。
1つのdiv(.side)
をinline-blockのすぐ内側にフロートさせ(.wrap)
、別のdiv(.content)
にtext-overflow(オーバーフローの場合は省略記号)を含む長い非折り返し文字列を含める必要があります。また.wrap
、コンテナよりも幅が広くないようにする必要があるため、最大幅は100%です。
のコンテンツの幅と.content
組み合わせたコンテンツの幅が、 -.side
のコンテナよりも広くなるのに十分な幅がある場合、コンテンツはオーバーフローする必要があります。.wrap
.content
そして、コンテンツの幅との.content
組み合わせ.side
がaのコンテナの幅よりも小さい場合、の.wrap
オーバーフローは発生しないはずです。ただの幅を取り、組み合わせてください。そう思われますが、FirefoxとIE10ではそうではありません。この2つのブラウザでは、の幅は最も広い内部divと同じです。しかし、私はそれがとの両方の幅を尊重することを期待していました。.content
.wrap
.content
.side
.wrap
.wrap
.side
.content
この動作はここで確認できます:http://jsbin.com/evamik/1/、ブラウザウィンドウを十分に広くすると、ライム色のdivにテキストオーバーフローがあることがわかります(.content)
。オーバーフローをオフにすると、非表示になり.content
ますが、その幅はaの幅に.wrap
等しく、の.content
幅.side
は無視されます。
では、と.wrap
の両方の幅を尊重するように強制する方法は?.side
.content
HTML:
<div class="wrap">
<div class="side">
side
</div>
<div class="content">
nonwrappnonwrappingnonwrappingnonwrappingnonwrapping
</div>
<div class="clear"></div>
</div>
CSS:
.wrap {
background: lime;
display: inline-block;
max-width: 100%;
}
.side {
float: right;
background: orange;
}
.content {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.clear {
clear: both;
}
URLの例:http://jsbin.com/evamik/1/