我有一个宽度设置为100%的主包装div。在其中,我想要有两个div,一个是固定宽度的,另一个填充剩余的空间。如何将第二个div浮动以填充其余的空间。感谢任何帮助。
有许多方法可以实现你所要求的功能:
float
属性: <div style="width: 100%; overflow: hidden;">
<div style="width: 600px; float: left;"> Left </div>
<div style="margin-left: 620px;"> Right </div>
</div>
display
属性,可将 div
元素转化为 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>
还有更多方法,但这两种是最流行的。
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>
演示:
div {
color: #fff;
font-family: Tahoma, Verdana, Segoe, sans-serif;
padding: 10px;
}
.container {
background-color:#2E4272;
display:flex;
}
.fixed {
background-color:#4F628E;
width: 200px;
}
.flex-item {
background-color:#7887AB;
flex-grow: 1;
}
<div class="container">
<div class="fixed">Fixed width</div>
<div class="flex-item">Dynamically sized content</div>
</div>
我不太了解HTML和CSS设计策略,但是如果你想要简单的东西,并且可以自适应屏幕大小(就像我一样),我认为最直接的解决方案是使
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 style="white-space:nowrap">
包裹两个 div,以防止调整大小时出现换行。 - John Henckelinline-block
代码。 - Kavindu Gayanthadiv.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>
或者使用浮动和外边距的更传统的方法。
在这个例子中,我已经包含了一个背景颜色来帮助显示事物的位置 - 还有如何处理浮动区域下面的内容。
在实际中不要将你的样式放在内联中,应该提取到样式表中。
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>
<div class="container" style="width: 100%;">
<div class="sidebar" style="width: 200px; float: left;">
Sidebar
</div>
<div class="content" style="margin-left: 202px;">
content
</div>
</div>
这将跨浏览器兼容。如果没有margin-left,当您的内容比侧边栏长时,您将遇到内容一直运行到左边的问题。
<div>
浮动,并给它一个与第一个<div>
固定宽度相等(或稍微大一些)的边距。<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>
更多的内容。
不要给固定宽度的背景;如果您需要将其可视化为不同的“列”,则使用Faux Columns技巧。
float: left;
和固定宽度,给第二个 div 添加 width: 100%;
和 float: left;
。这样就可以了。如果你想在下面放置项目,你需要在要放置在下面的项目上添加 clear: both;
。