这是我很久以前学到的东西之一,从来没有想过我是否真的以正确的方式做到了。
假设我们有这样的结构:
<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%
,则会向下移动到下一行:/
注意:在我的特定场景中,我不想使用表格。
答案 0 :(得分:15)
您display:block
和float:left
一起将div放在一起。
如果仅知道第一个div宽度,则使mainContent填充其余空间,然后在sideBar和mainContent ex上使用百分比:20%80%而不是使用固定宽度。否则,您将需要一个JavaScript解决方案来实现跨浏览器兼容性。
答案 1 :(得分:6)
我正在修改我的答案:How to make an inline-block element fill the remainder of the line?
#sideBar
。background-image
faux columns)请参阅:http://jsfiddle.net/qx32C/37/
#wrapper {
overflow: hidden; /* clear the float */
}
#sideBar {
width: 100px;
float: left;
background: #f0f
}
#mainContent {
overflow: hidden;
background: #ccc
}
Why did I replace margin-left: 100px
with overflow: hidden
on #mainContent
?
答案 2 :(得分:1)
使用向左或向右浮动并不重要。 你有宽度为600px的包装。 当您对侧边栏使用float并包含在包装内部时,必须确保侧边栏的宽度并包含(包括边距和填充)等于或小于600px。 如果不是,第二个元素将低于第一个元素。 希望这有助于^^
答案 3 :(得分:-1)
并排使用display:flex
两个div浮动
#wrapper{
width: 600px;
display:flex;
}
#sideBar{
display:inline-flex;
width: 25%;
}
#mainContent{
width:75%;
flex:1;
}