我有一个设置100%宽度的主包装div。在里面,我想有两个div,一个是固定宽度的,另一个是填充其余空间的。我如何浮动第二个div来填充其余的空间。谢谢你的帮助。
我有一个设置100%宽度的主包装div。在里面,我想有两个div,一个是固定宽度的,另一个是填充其余空间的。我如何浮动第二个div来填充其余的空间。谢谢你的帮助。
Answers:
有许多方法可以满足您的要求:
使用CSS float
属性:
<div style="width: 100%; overflow: hidden;">
<div style="width: 600px; float: left;"> Left </div>
<div style="margin-left: 620px;"> Right </div>
</div>
使用CSS display
属性 -可用于使div
s的行为类似于table
:
<div style="width: 100%; display: table;">
<div style="display: table-row">
<div style="width: 600px; display: table-cell;"> Left </div>
<div style="display: table-cell;"> Right </div>
</div>
</div>
有更多的方法,但是这两种是最流行的。
CSS3引入了弹性盒(也称为弹性盒),它也可以实现此行为。
只需定义第一个div的宽度,然后给第二个div赋予一个flex-grow
值1
即可使其填充父对象的剩余宽度。
.container{
display: flex;
}
.fixed{
width: 200px;
}
.flex-item{
flex-grow: 1;
}
<div class="container">
<div class="fixed"></div>
<div class="flex-item"></div>
</div>
请注意,弹性框与旧版浏览器不向后兼容,但对于定位现代浏览器来说是一个不错的选择(另请参见Caniuse和MDN)。CSS Tricks上提供了有关如何使用弹性框的详尽综合指南。
我对HTML和CSS的设计策略了解不多,但是如果您正在寻找简单且可以自动适应屏幕的内容(就我而言),我相信最直接的解决方案是使div像单词中的单词一样一个段落。尝试指定display: inline-block
<div style="display: inline-block">
Content in column A
</div>
<div style="display: inline-block">
Content in column B
</div>
您可能需要或不需要指定DIV的宽度
display:flex
是最好的解决方案,但我认为inline-block
也是出色的,因为它可以在更多浏览器上使用。顺便说一句,您可能需要将两个div都用换行,<div style="white-space:nowrap">
以防止调整大小。
inline-block
码。
您可以使用CSS网格来实现此目的,这是用于说明目的的简化版本:
div.container {
display: grid;
grid-template-columns: 220px 20px auto;
grid-template-rows: auto;
}
div.left {
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: row1-start
grid-row-end: 3;
background-color: Aqua;
}
div.right {
grid-column-start: 3;
grid-column-end: 4;
grid-row-start: 1;
grid-row-end; 1;
background-color: Silver;
}
div.below {
grid-column-start: 1;
grid-column-end: 4;
grid-row-start: 2;
grid-row-end; 2;
}
<div class="container">
<div class="left">Left</div>
<div class="right">Right</div>
<div class="below">Below</div>
</div>
或更传统的使用float和margin的方法。
在此示例中,我包括了背景色,以帮助显示事物的位置-以及浮动区域下方内容的处理方式。
不要将样式嵌入现实生活中,而是将其提取到样式表中。
div.left {
width: 200px;
float: left;
background-color: Aqua;
}
div.right {
margin-left: 220px;
background-color: Silver;
}
div.clear {
clear: both;
}
<div class="left"> Left </div>
<div class="right"> Right </div>
<div class="clear">Below</div>
<div style="width: 200px; float: left; background-color: Aqua;"> Left </div>
<div style="margin-left: 220px; background-color: Silver;"> Right </div>
<div style="clear: both;">Below</div>
如果您不使用IE6,则浮动第二个<div>
并为其留出一个等于(或可能比第一个<div>
的固定宽度大一点的)边距。
HTML:
<div id="main-wrapper">
<div id="fixed-width"> lorem ipsum </div>
<div id="rest-of-space"> dolor sit amet </div>
</div>
CSS:
#main-wrapper {
100%;
background:red;
}
#fixed-width {
width:100px;
float:left
}
#rest-of-space {
margin-left:101px;
/* May have to increase depending on borders and margin of the fixd width div*/
background:blue;
}
边距说明了“剩余空间” <div>
可能包含比“固定宽度”更多的内容的可能性<div>
。
不要给固定宽度一个背景。如果您需要明显地将它们视为不同的“列”,请使用“ 仿列”技巧。