2024-09-29 08:00:02

CSS两个div相邻

我想把两个<div>放在一起。右边<div>大约是200px;而左边<div>必须填满剩下的屏幕宽度?我该怎么做呢?


当前回答

您可以使用flexbox布局您的项目:

#{母公司 显示:flex; } #{狭窄 宽度:200 px; 背景:lightblue; /*这样就可以看到*/ } #{宽 flex: 1; /*扩展到容器的其余部分*/ 背景:lightgreen; /*这样就可以看到*/ } < div id = "父" > <div id=" width "> width(其余的宽度)</div> <div id="窄">窄(200px)</div> < / div >

这基本上只是flexbox的表面。Flexbox可以做一些非常了不起的事情。


对于老式浏览器的支持,你可以使用CSS float和width属性来解决这个问题。

#{狭窄 浮:正确; 宽度:200 px; 背景:lightblue; } #{宽 浮:左; 宽度:calc(100% - 200px); 背景:lightgreen; } < div id = "父" > <div id=" width "> width(其余的宽度)</div> <div id="窄">窄(200px)</div> < / div >

其他回答

您可以使用flexbox布局您的项目:

#{母公司 显示:flex; } #{狭窄 宽度:200 px; 背景:lightblue; /*这样就可以看到*/ } #{宽 flex: 1; /*扩展到容器的其余部分*/ 背景:lightgreen; /*这样就可以看到*/ } < div id = "父" > <div id=" width "> width(其余的宽度)</div> <div id="窄">窄(200px)</div> < / div >

这基本上只是flexbox的表面。Flexbox可以做一些非常了不起的事情。


对于老式浏览器的支持,你可以使用CSS float和width属性来解决这个问题。

#{狭窄 浮:正确; 宽度:200 px; 背景:lightblue; } #{宽 浮:左; 宽度:calc(100% - 200px); 背景:lightgreen; } < div id = "父" > <div id=" width "> width(其余的宽度)</div> <div id="窄">窄(200px)</div> < / div >

正如大家所指出的,你可以通过设置float:right;RHS含量为负,LHS为负。

然而. .如果你不使用浮点数:left;在LHS上(如Mohit所做的那样),那么你会得到一个步进效果,因为LHS div仍然会在布局中消耗边缘空间。

然而. .LHS浮动将收缩内容,所以如果这是不可接受的,你将需要插入一个定义宽度的子节点,在这一点上,你也可以在父节点上定义宽度。

然而. .正如David指出的那样,你可以改变标记的读取顺序来避免LHS浮点要求,但这有可读性和可能的可访问性问题。

然而. .这个问题可以用浮动来解决,并提供一些额外的标记

(警告:我不赞成在那个例子中使用.clearing div,详情请看这里)

综合考虑,我想我们大多数人都希望有一个非贪婪宽度:留在CSS3中……

我遇到了同样的问题,Mohits版本的工作。如果你想在html中保持你的左右顺序,试试这个。在我的例子中,左边的div正在调整大小,右边的div保持宽度260px。

HTML

<div class="box">
<div class="left">Hello</div>
<div class="right">World</div>
</div>

CSS

.box {
    height: 200px;
    padding-right: 260px;
}    

.box .left {
    float: left;
    height: 200px;
    width: 100%;
}

.box .right {
    height: 200px;
    width: 260px;
    margin-right: -260px;
}

诀窍是在主框上使用右填充,但通过再次使用右边距放置右框来再次使用该空间。

这不是每个人的答案,因为它在IE7-中不受支持,但你可以使用它,然后使用IE7-的替代答案。它是display: table, display: table-row和display: table-cell。注意,这不是使用表格进行布局,而是样式化div,这样就可以很好地排列,省去上面的所有麻烦。我的是一个html5应用程序,所以它工作得很好。

本文展示了一个示例:http://www.sitepoint.com/table-based-layout-is-the-next-big-thing/

下面是你的样式表的样子:

 .container {
    display: table;
    width:100%;
 }

 .left-column {
    display: table-cell;
 }

 .right-column {
    display: table-cell;
    width: 200px;
 }
div1 {
    float: right;
} 
div2 {
    float: left;
}

只要你为分隔这两个列块的元素设置clear:这就可以正常工作。