You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将第二个flex项垂直和水平均分为两半?

解决方案:让目标flex项自身成为flex容器

嘿,我看了你的问题和代码,其实要实现把第二个flex项(橙色盒子)垂直/水平拆分的效果,核心思路是让这个橙色盒子本身也变成一个flex容器,这样它内部的元素就能像外层的.desktop一样实现均分布局啦!

步骤1:调整HTML结构

先给橙色盒子添加需要拆分的子元素,比如要拆成上下两半的话:

<div class="desktop">
  <div class="yellow">lorem</div>
  <div class="orange">
    <div class="orange-half top">lorem</div>
    <div class="orange-half bottom">lorem</div>
  </div>
  <div class="purple">lorem</div>
  <div class="green">lorem</div>
</div>

步骤2:修改CSS样式

重点是给橙色盒子设置flex属性,再让它的子元素均分空间:

.desktop {
  display: flex;
  flex-direction: column;
  height: 100vh; /* 让外层容器占满视口高度,方便直观看到效果 */
}

/* 保持原有四个大项的均分规则 */
.yellow, .orange, .purple, .green {
  flex: 1;
  padding: 1rem;
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* 关键:把橙色盒子变成flex容器 */
.orange {
  display: flex;
  flex-direction: column; /* 垂直拆分,换成row就是水平拆分 */
}

/* 让橙色盒子的子元素均分空间 */
.orange-half {
  flex: 1;
  /* 可选:加个浅色边框区分拆分的部分 */
  border: 1px solid rgba(255,255,255,0.3);
  display: flex;
  align-items: center;
  justify-content: center;
}

/* 保留原有背景色 */
.yellow { background: yellow; color: black; }
.orange { background: orange; }
.purple { background: purple; }
.green { background: green; }

额外拓展:如果要同时垂直+水平拆分(分成四个小区域)

只要在橙色盒子的子元素里再嵌套一层flex容器就行,比如:

<div class="orange">
  <div class="orange-row">
    <div>lorem</div>
    <div>lorem</div>
  </div>
  <div class="orange-row">
    <div>lorem</div>
    <div>lorem</div>
  </div>
</div>

对应的CSS补充:

.orange-row {
  display: flex;
  flex: 1;
}

.orange-row div {
  flex: 1;
  border: 1px solid rgba(255,255,255,0.3);
  display: flex;
  align-items: center;
  justify-content: center;
}

内容的提问来源于stack exchange,提问作者PawelS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:47:39