请参阅fiddle here
要求是红色区域应自动扩展剩余宽度。问题是蓝色区域没有显示在顶部对齐。
有没有办法在没有table
和javascript
的情况下实现这一目标?
注意:与Expand div to max width when float:left is set中的问题非常相似,但不一样。在这个问题中有2个浮动的div。
答案 0 :(得分:4)
如果您将right
div放在middle
之前怎么办?
<div class="content">
<div class="left">
<p>Hi, Flo!</p>
</div>
<div class="right">foo</div>
<div class="middle">
<p>is</p>
<p>this</p>
<p>what</p>
<p>you are looking for?</p>
</div>
</div>
查看更新后的jsFiddle
解释:
使用float
属性就像使用position:absolute
属性一样。它从DOM流中获取元素。这意味着他们不占用任何空间。
这就是为什么在使用margin-left
div时必须在页面内容上设置float:left
属性的原因。如果没有,内容将在左边的div下面。
在对话框中,您的middle
div位于DOM流中。所以它需要所有的空间(因为他的宽度和他的边缘属性)。因此,当您想要添加float:right
div时,下一个可用空间位于middle
div之下,而不是在同一行上。
这就是为什么当您使用float
属性时,必须在“未浮动”内容之前设置它们。
答案 1 :(得分:1)
你去吧
<强> HTML 强>
<div class="green">some content</div>
<div class="blue">some content</div>
<div class="red">some content</div>
<强> CSS 强>
.green {
float: right;
width: 300px; /*if you need set the width*/
margin: 0 0 0 10px;/*if you need set the margin*/
}
.blue {
float: left;
width: 300px; /*if you need set the width*/
margin: 0 10px 0 0;/*if you need set the margin*/
}
.red {overflow: hidden;}