我想使用DIV进行两列布局,其中右列的固定宽度为200px,左侧列将占用剩下的所有空间。
如果您使用表格,这很容易:
<table width="100%">
<tr>
<td>Column 1</td>
<td width="200">Column 2 (always 200px)</td>
</tr>
</table>
但DIV怎么样?有可能做到这一点吗?如果是,那怎么办?
答案 0 :(得分:88)
以下示例是源自订购的,即第1列出现在HTML源代码的第2列之前。列是左侧还是右侧是由CSS控制的:
固定权利
#wrapper {
margin-right: 200px;
}
#content {
float: left;
width: 100%;
background-color: #CCF;
}
#sidebar {
float: right;
width: 200px;
margin-right: -200px;
background-color: #FFA;
}
#cleared {
clear: both;
}
<div id="wrapper">
<div id="content">Column 1 (fluid)</div>
<div id="sidebar">Column 2 (fixed)</div>
<div id="cleared"></div>
</div>
已修复左侧
#wrapper {
margin-left: 200px;
}
#content {
float: right;
width: 100%;
background-color: #CCF;
}
#sidebar {
float: left;
width: 200px;
margin-left: -200px;
background-color: #FFA;
}
#cleared {
clear: both;
}
<div id="wrapper">
<div id="content">Column 1 (fluid)</div>
<div id="sidebar">Column 2 (fixed)</div>
<div id="cleared"></div>
</div>
替代解决方案是使用display: table-cell;这导致高度相等的列。
答案 1 :(得分:11)
这是一个解决方案(它有一些怪癖,但如果你注意到它们,请告诉我,并且它们是一个问题):
<div>
<div style="width:200px;float:left;display:inline-block;">
Hello world
</div>
<div style="margin-left:200px;">
Hello world
</div>
</div>
答案 2 :(得分:6)
CSS:
#sidebar {float: right; width: 200px; background: #eee;}
#content {overflow: hidden; background: #dad;}
HTML:
<div id="sidebar">I'm 200px wide</div>
<div id="content"> I take up the remaining space <br> and I don't wrap under the right column</div>
上面应该可行,你可以把代码放在包装器里如果你想给它宽度并使它居中,overflow:hidden
在没有宽度的列上是让它包含垂直的关键不包围侧栏(可左或右)
IE6 可能在#content div上也需要设置zoom:1
,如果您需要它的支持
答案 3 :(得分:5)
CSS解决方案
#left{
float:right;
width:200px;
height:500px;
background:red;
}
#right{
margin-right: 200px;
height:500px;
background:blue;
}
查看http://jsfiddle.net/NP4vb/3/
上的工作示例jQuery解决方案
var parentw = $('#parent').width();
var rightw = $('#right').width();
$('#left').width(parentw - rightw);
答案 4 :(得分:1)
我最近在这个网站上展示了使用CSS的液体布局。 http://matthewjamestaylor.com/blog/perfect-multi-column-liquid-layouts(请查看以下链接中的演示页面)。
作者现在提供固定宽度布局的示例。查看; http://matthewjamestaylor.com/blog/how-to-convert-a-liquid-layout-to-fixed-width
这提供了以下示例, http://matthewjamestaylor.com/blog/ultimate-2-column-left-menu-pixels.htm(对于两列的布局,就像我想的那样)
http://matthewjamestaylor.com/blog/fixed-width-or-liquid-layout.htm(三列布局)。
很抱歉这个网站有这么多链接,但我认为这是一个非常棒的资源。
答案 5 :(得分:1)
我认为这是一个简单的答案,这将根据父宽度将子开发者分成50%。
<div style="width: 100%">
<div style="width: 50%; float: left; display: inline-block;">
Hello world
</div>
<div style="width: 50%; display: inline-block;">
Hello world
</div>
</div>
答案 6 :(得分:-1)
#wrapper {
margin-right: 50%;
}
#content {
float: left;
width: 50%;
background-color: #CCF;
}
#sidebar {
float: right;
width: 200px;
margin-right: -200px;
background-color: #FFA;
}
#cleared {
clear: both;
}
&#13;
<div id="wrapper">
<div id="content">Column 1 (fluid)</div>
<div id="sidebar">Column 2 (fixed)</div>
<div id="cleared"></div>
</div>
&#13;