解決策 1
(またはオーバーフロー: 自動)を使用overflow: hidden
して、残りの水平スペースを埋めます。
(注:これを機能させるには、マークアップの最初に要素を右側に配置する必要があります)
フィドル
<div>
<div class="div2">DIV 2</div>
<div class="div1">DIV 1</div>
</div>
CSS
.div1 {
background:yellow;
overflow: hidden;
}
.div2 {
background:brown;
float:right;
width: 50px;
}
解決策 2
これを行うことができますbox-sizing: border-box
フィドル
<div>
<div class="div1">DIV 1</div>
<div class="div2">DIV 2</div>
</div>
CSS
.div1 {
background:yellow;
float:left;
padding-right: 50px;
margin-right: -50px;
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
}
.div2 {
background:brown;
float:left;
width: 50px;
}
解決策 3
CSS テーブルを使用します。
フィドル
<div class="container">
<div class="div1">DIV 1</div>
<div class="div2">DIV 2</div>
</div>
.container
{
display:table;
}
.div1 {
background:yellow;
display: table-cell;
width: 100%;
}
.div2 {
background:brown;
width: 50px;
display: table-cell;
word-break: break-word;
min-width: 50px;
}
解決策 4 (CSS3 が必要)
使用するcalc
フィドル
最初の子セットwidth: calc(100% - 50px)
2 番目の div セットwidth: 50px;
.div1 {
background:yellow;
width: calc(100% - 50px);
float: left;
}
.div2 {
background:brown;
width: 50px;
float: left;
}