【发布时间】:2013-07-03 01:24:04
【问题描述】:
我需要水平并排堆叠两个div 元素,其中右侧的元素应始终根据其内容自动调整其大小(达到最大给定宽度),而左侧的元素应仅使用空间离开了。
类似这样的:
到目前为止没有问题。我设法通过将右侧的div 浮动到右侧并将左侧的溢出设置为隐藏来做到这一点:
HTML:
<div class="frame">
<div class="right">
I adjust my with to my content but still need to know my boundaries if I'm floated right (max-width)
</div>
<div class="left">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>
CSS:
.frame {
background-color: lightgreen;
width: 80%;
padding: 12px;
overflow: hidden;
}
.left {
overflow: hidden;
background-color: #709670;
border: 1px solid black;
}
.right {
float: right;
max-width: 200px;
background-color: #127212;
color: white;
border: 1px solid black;
}
挑战是当页面显示在小屏幕(或小浏览器窗口,...)上时,我希望两个 divs 垂直堆叠,如下所示:
基本上我认为这可以通过一个简单的媒体查询来完成:
@media screen and (max-width: 700px) {
.right {
float: none;
max-width: none;
}
}
唯一的问题是右div(根据其内容调整大小的那个)需要在标记中的左一个之前创建,以使浮动的东西工作。结果,它出现在“小”布局中的左侧上方:
这是一个工作示例(只需使用中间缩放器在“小”和“大”布局之间切换):Example on JSFiddle
我已经尝试使用 display: table 和 table-cell 而不是浮动来完成布局,但是这样我无法使右列与其内容一样大,并且仍然有一个有效的最大宽度设置。
【问题讨论】: