8 に答える
更新された回答:
ここでの答えはかなり古いです。現在、これはフレックスボックスを使用して簡単に実現できます。
.container {
border: 4px solid red;
display: flex;
}
.content {
border: 4px solid green;
flex-grow: 1;
margin: 5px;
}
.sidebar {
border: 4px solid blue;
margin: 5px 5px 5px 0;
width: 200px;
}
<div class="container">
<div class="content">
Lorem ipsum dolor sit amet.
</div>
<div class="sidebar">
Lorem ipsum.
</div>
</div>
元の答え:
<div> のようなブロック レベルの要素は、使用可能な幅の 100% を自動的に埋めます。それらの 1 つを右にフロートさせると、もう 1 つのコンテンツが残りのスペースを埋めます。
<div style="height: 100px; border: 3px solid red;" id="container">
<div style="float: right; width: 100px; border: 3px solid blue;">Fixed</div>
<div style="border: 3px solid green;">Fill</div>
</div>
これを見ている人にとっては、これをはるかに柔軟な方法で実行できる calc と呼ばれる新しい css プロパティ メソッドがあります。
<div class="container">
<div class="fixedWidth"></div>
<div class="variableWidth"></div>
</div>
.fixedWidth{
width:200px;
}
.variableWidth{
width:calc(100%-200px);
}
警告の言葉として、これはあまり移植性がなく、モバイル デバイスでのサポートは不安定です。IOS 6+ および android 4.4 だと思います。ただし、IE 9.0 以降では、デスクトップのサポートが大幅に向上しています。
私は過去に JS ハックを使用してこのテクニックを実現しましたが、サイズ変更が遅くなるため、別のレイアウトをお勧めします。
window.addEventListener('resize', function resize(){
var parent = document.getElementById('parent');
var child = document.getElementById('child');
child.style.width = parseInt(parent.offsetWidth - 200) + "px"; //200 being the size of the fixed size element
}, false);
これはあなたのために行う必要があります:
<div style="position: absolute; width: 100%; height: 100px; border: 3px solid red;" id="container">
<div style="float: right; width: 100px; border: 3px solid blue;">Fixed</div>
<div style="display: block; margin-right: 100px; border: 3px solid green;">Fill</div>
</div>
これは、最終結果から3pxの境界線を削除することを前提としています(境界線の幅が幅に含まれていないため、例では重なり合っています)。
このためのusedisplay:table
プロパティを使用して、マークアップを変更せずにこれを達成できます。
.parent{
position: absolute;
left:0;
right:0;
height: 100px;
border: 3px solid red;
display:table;
}
.fill{
margin-right: 100px;
border: 3px solid green;
display:table-cell;
width:100%;
}
.fixed{
width: 100px;
border: 3px solid blue;
display:table-cell;
}
なしでライブ例を確認してくださいhorizontal scrollbar
http://jsfiddle.net/WVDNe/5/
別の例ですが、より良い方法でこれを確認してください:
http://jsfiddle.net/WVDNe/6/
注:IE7以下では機能しません
これもチェックしてください
http://jsfiddle.net/LJGWY/4/
すべてのブラウザで動作します。
fixed div
中に入れることができfill div
ます。
<div id="container">
<div>Fill
<div>Fixed</div>
</div>
</div>
CSS
#container{
position:absolute;
width:90%;
height:100px;
border:3px solid red;
}
#container div{
height:95%;
border:3px solid green;
width:100%;
}
#container div div{
height:95%;
width:100px;
border:3px solid blue;
float:right;
}
例: http: //jsfiddle.net/EM8gj/3/
次のように位置を設定してみてください。
<div style="position: absolute; width: 100%; height: 100px; border: 3 solid red;" id="container">
<div style="position:absolute; left: 0; top: 0; right: 100px; border: 3 solid green;">Fill</div>
<div style="position:absolute; top: 0; right: 0; width: 100px; border: 3 solid blue;">Fixed</div>
</div>
テーブルスタイルを使用できます。テーブルスタイルとサブアイテムでdivを作成し、それがテーブルセルスタイルであること
ラベル テキスト