【发布时间】:2015-12-26 02:00:00
【问题描述】:
我正在开发一个响应式网站,遇到了一个有趣的问题。我有一些并排的div。可能有 2 到 6 个左右。当屏幕不够宽而无法正确显示所有内容时,div 会垂直堆叠。使用 CSS 很简单。
问题是,我需要它们根据布局以不同的顺序排列。使用 2 或 3 个 div (Changing divs order based on width) 很容易做到这一点,但添加第四个 div 则更具挑战性。
我可以使用position: absolute; 并手动设置位置,但这会导致父级缩小并且无法正确包含它们。
为了更复杂,我不能使用 JavaScript。
使用两列:
(未经测试)
HTML:
<div id="container">
<div class="column-half column-half-2">
First div on mobile, right div on desktop
</div>
<div class="column-half column-half-1">
Second div on mobile, left div on desktop
</div>
</div>
CSS:
.container {
width: 80%;
max-width: 1200px;
margin: 0 auto;
padding-bottom: 20px;
position: relative;
}
.column-half {
display: table-cell;
padding: 25px;
vertical-align: top;
width: 40%;
}
.column-half-1 {
float: left;
}
.column-half-2 {
float: right;
}
HTML,有 4 列:
<div id="container">
<div class="column-quarter column-quarter-3">
First div on mobile, third div on desktop
</div>
<div class="column-quarter column-quarter-2">
Second div on mobile, second div on desktop
</div>
<div class="column-quarter column-quarter-1">
Third div on mobile, first div on desktop
</div>
<div class="column-quarter column-quarter-4">
Fourth div on mobile, fourth div on desktop
</div>
</div>
【问题讨论】:
-
我正要提出与 TylerH 所做的类似的建议。如果您可以使用 Flexbox,它可能会让您以一种优雅的方式做到这一点。如果您需要包含示例的快速指南,这里是 CSS Tricks 的链接:css-tricks.com/snippets/css/a-guide-to-flexbox
-
多一点上下文也会有所帮助。这可以通过一些巧妙的浮动来完成,或者需要一些更狡猾的东西。