これは私がずっと前に学んだことの1つであり、実際にそれを行っているかどうかについてはあまり考えていませんでした右方法。
次のような構造があるとしましょう。
<div id="wrapper">
<div id="sideBar"></div>
<div id="mainContent"></div>
</div>
また、wrapper
の幅が600px
であるとしましょう。
sideBar
left
とmainContent
right
をフロートする必要がありますか、それとも両方をleft
フロートする必要がありますか?
さらに、sideBar
に固定幅を設定した場合、テーブルの動作と同様に、mainContent
で残りのスペースを埋めるにはどうすればよいですか? mainContent
をdisplay:inline-block
とwidth:100%
に設定すると、次の行に移動します:/
注:私の特定のシナリオでは、テーブルを使用したくありません。
君は display:block
に加えて float:left
divを並べてフロートします。
最初のdiv幅のみがわかっている場合にmainContentが残りのスペースを埋めるようにするには、sideBarとmainContentの両方でパーセンテージを使用します。例:固定幅を使用する代わりに20%80%。それ以外の場合は、ブラウザー間の互換性を実現するためにJavaScriptソリューションが必要になります。
ここから答えを変更しています: インラインブロック要素を行の残りの部分に埋める方法は?
#sideBar
のみがフロートされます。background-image
を使用する必要があります)参照: http://jsfiddle.net/qx32C/37/
#wrapper {
overflow: hidden; /* clear the float */
}
#sideBar {
width: 100px;
float: left;
background: #f0f
}
#mainContent {
overflow: hidden;
background: #ccc
}
margin-left: 100px
でoverflow: hidden
を#mainContent
に置き換えたのはなぜですか?
フロートを左または右に使用することは重要ではありません。 600pxの幅のラッパーがあります。サイドバーとインクルードの両方にfloatを使用し、ラッパー内に含める場合は、サイドバーの幅とインクルード(マージンとパディングを含む)が600px以下であることを確認する必要があります。そうでない場合、2番目の要素は最初の要素の下になります。これがお役に立てば幸いです^^
使用する display:flex
2つのdivフロートを並べて使用する場合
#wrapper {
width: 600px;
display: flex;
}
#sideBar {
display: inline-flex;
width: 25%;
}
#mainContent {
width: 75%;
flex: 1;
}