divのブロックモデルを理解します。それは利用可能な全幅を取ります。これは機能します:
.container {
width: 1000px;
margin: 0px auto;
/*display:table;*/
position:relative;
}
#left {
width: 600px;
display:inline-block;
/*float:left;*/
position:absolute;
left:0;
}
#right {
background-color:rgba(0,0,0,0.2);
-webkit-box-shadow: 0 0 10px rgba(0,0,0,0.1);
-moz-box-shadow: 0 0 10px rgba(0,0,0,0.1);
-o-box-shadow: 0 0 10px rgba(0,0,0,0.1);
box-shadow: 0 0 10px rgba(0,0,0,0.1);
width: 400px;
border-radius: 3px;
display:inline-block;
/*float:right;*/
position:absolute;
right:0;
}
コメント行は、機能する別の方法であることに注意してください。
私は何をしましたか?
- コンテナを相対的にするので、このdivの絶対位置の子は、これに対して相対位置になります。
display:inline-block;を作成します 左右のブロックなので、必要な幅を取り、クリアしたり、重なり合ったりしないでください。幅を設定する場合、これは必要ありません。
- 右の位置を右に0にし、左の位置を左に0にします。
アップデート
私は今、最善のアプローチはブロックフォーマットコンテキストをトリガーすることだと思います。フロート#left
を左に#right
作成し、プロパティoverflow:auto;
または表示されているものとは異なるものを指定します。#right
IE6では、hasLayoutと呼ばれるものをトリガーする必要があるため、プロパティに与えzoom:1;
ます。