我需要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;
}
挑战在于,div
当页面显示在小屏幕(或小浏览器窗口,...)上时,我希望两个 s 垂直堆叠,如下所示:
基本上我认为这可以通过一个简单的媒体查询来完成:
@media screen and (max-width: 700px) {
.right {
float: none;
max-width: none;
}
}
唯一的问题是右侧div
(根据其内容调整大小的那个)需要在标记中的左侧之前创建,以使浮动的东西起作用。结果,它出现在“小”布局中的左侧上方:
这是一个工作示例(只需使用中间调整器在“小”和“大”布局之间切换):JSFiddle 上的示例
我已经尝试使用display: table
andtable-cell
而不是浮动来完成布局,但是这样我无法使右列与其内容一样大,并且仍然设置了有效的最大宽度。