私は次のレイアウトを正しくしようとして夢中になっています:
- 固定幅の左 div (複数の div が横に並んでいる可能性があります)
- 自動幅の中央の div (残りのスペースを占有します)
- 固定幅の右側の div (複数の div が横に並んでいる可能性があります)
- 左か右かにかかわらず、中央の div と最初の隣人の間にマージンが存在する必要があります
HTML
<div class="container">
<div class="all left">
Left1
</div>
<div class="all left">
Left2
</div>
<div class="all center">
Center
</div>
<div class="all right">
Right1
</div>
<div class="all right">
Right2
</div>
</div>
CSS
.container {
display: table;
position: relative;
width: 100%;
height: 100px;
border-spacing: 5px;
}
.all {
display: table-cell;
border: 1px solid #333;
margin: 5px;
}
.left {
width: 45px;
}
.right {
width: 45px;
}
.center {
width: auto;
}
フィドル
http://jsfiddle.net/ozrentk/VdryG/3/
ただし、何を試しても (たとえばborder-spacing: 0px
、左または右の div を配置したりmargin: 0
、ボーダーを折りたたんだり)、すべてのマージンが同じになります。
簡単にするために、私はこれが欲しい:
+--------------------------------------------------------------+
|+-----++-----+ +------------------------------++-----++-----+|
|| || | | || || ||
|| || | | || || ||
|| || | | || || ||
|| || | | || || ||
|| || | | || || ||
|| || | | || || ||
|| || | | || || ||
|| || | | || || ||
|+-----++-----+ +------------------------------++-----++-----+|
+--------------------------------------------------------------+
しかし、現在私はこれを持っています:
+--------------------------------------------------------------+
| |
| +----+ +----+ +--------------------------+ +----+ +----+ |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| +----+ +----+ +--------------------------+ +----+ +----+ |
| |
+--------------------------------------------------------------+
このレイアウトで個々の余白を制御するにはどうすればよいですか?
PS
- レイアウトの問題が発生するため、フロートと非フロートを混在させるソリューションは必要ありません。これを参照してください
- css calc を使用したソリューションは実験的なものであるため、使用したくありません
- この種のレイアウトには CSS を使用する必要があり、ちらつきが発生する可能性があるため、JS ソリューションは必要ありません。また、ユーザーは JS を無効にすることができます