html - 垂直对齐弹性盒
问题描述
我正在尝试使用此图像中的 flexbox 将子元素放置在父元素中 - > https://ibb.co/Wpph8fP。
我知道这可以通过做三列然后使用 flex,然后在第一列中使用 flex-column 并垂直居中其他两列来实现。
问题是,我需要在一个父 div 中执行此操作。第 4 个元素被包裹,它使用第一个元素创建列,然后我需要将其他两个元素垂直居中。
这是我已经做过的:
the code is here
https://codepen.io/MrEyelet/pen/wLxygN?editors=1100
解决方案
要使用一个 flex,首先设置
flex-direction
为 column 并将 wrap 设置为flex-wrap
.而且,需要在两行上的部分具有可变高度以避免换行。
接下来,将
flex
属性设置为none
,设置margin
到足以在需要位于一行的部分中换行。这将强制弹性项目打破并保持项目的大小。flex - 值[mdn]
none
该项目的大小根据其width
和height
属性。它是完全不灵活的:它相对于弹性容器既不收缩也不增长。这相当于设置"flex: 0 0 auto"
。
body {
background: tomato;
margin: 0;
}
.parent {
display: flex;
justify-content: center;
align-items: center;
flex-flow: column wrap;
height: 100vh;
}
.child {
width: 30%;
height: 200px;
margin: 20px 0;
background: indigo;
}
/* add below */
.child:nth-of-type(-n+2) {
flex: 1 0 calc(50% - 40px);
}
/* add below */
.child:nth-of-type(n+3) {
flex: none;
margin: 50% 0;
}
<div class="parent">
<div class="child child-1">
</div>
<div class="child child-2">
</div>
<div class="child child-3">
</div>
<div class="child child-4">
</div>
</div>
推荐阅读
- vb.net - JSON.NET 返回 Null 或 Nothing 值
- node.js - 在端点内的所有 API 调用完成之前,Node.js 后端返回响应
- java - com.intellij.execution.ExecutionException:找不到 web 模块的 my-portal-0.0.1-SNAPSHOT
- python - 如何根据其中最适合的值类型转换数据框列?
- git - 签出分支时,文件被删除并在 git status 中显示为已删除
- python - 将不同目录的文件连接到一个文件(Python)
- mysql - 创建它们之间的关系时,表顺序在 mysql 中是否重要?
- python - 血压的平均真实变异性(ARV)指数,如何在 r 或 python 中编辑此公式
- php - 为什么此代码未在页面上显示我的照片?
- python - 如何将多个未知长度的参数从反应传递到django url