【发布时间】:2020-05-16 18:14:21
【问题描述】:
我需要一些关于响应式 html 的帮助。
我有一个 flexbox 布局,有两列。每列包含两个不同高度的 div。
在移动设备上,我将 flex-direction 设置为列,因此它分成一列:
但正如您可能已经猜到的那样,我希望订单是 ABCD。我意识到我目前的设置可能无法做到这一点,因为 AFAIK 你不能订购子孩子。但是我有什么选择来获得想要的结果?
我可以用 javascript 重新排列东西,但如果可能的话,我更喜欢纯 CSS 方法。
这可以实现吗?我需要 CSS 网格来执行此操作吗?
我添加了一个 sn-p 来说明这个问题。也在codepen上:https://codepen.io/Mudloop/pen/PowrKPV
(为简单起见,它没有媒体查询,只是相同的 html 两次不同的类)。
* { box-sizing: border-box; }
body { background-color: #444; color: white; font-family: sans-serif; max-width:650px; }
.normal {
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items: flex-start;
margin: 20px;
}
.normal > div {
color: white;
width: calc(50%);
}
.normal > div > div {
background-color: #333;
padding: 10px;
margin: 10px;
}
.mobile {
display: flex;
flex-direction: column;
flex-wrap: wrap;
align-items: flex-start;
margin:20px;
}
.mobile > div {
color: white;
width: 100%;
}
.mobile > div > div {
background-color: #333;
padding: 10px;
margin: 10px;
}
<body>
Desktop
<div class="normal">
<div>
<div>A<br></div>
<div>C<br><br><br><br><br></div>
</div>
<div>
<div>B<br><br></div>
<div>D<br><br><br></div>
</div>
</div>
Mobile
<div class="mobile">
<div>
<div>A<br></div>
<div>C<br><br><br><br><br></div>
</div>
<div>
<div>B<br><br></div>
<div>D<br><br><br></div>
</div>
</div>
</body>
【问题讨论】:
-
grid 肯定会用 css
orderproperty 解决它。 -
谢谢@RicoKahler。我希望有另一种解决方案,因为 CSS 网格让我害怕 :) 但如果没有,我会尝试找出它们。
-
看起来 CSS 网格也不能解决问题,因为网格单元格不能具有可变(任意)高度。
标签: html css flexbox responsive