有没有办法用 calc 实现我的 Flexbox 布局?

Is there a way to achieve my Flexbox layout with calc?

我正在尝试使用 Flexbox(不是 网格!)来安排我的容器,使其看起来像这张图片

具有以下HTML:

<div class="container">
    <div class="sub-container">
        <div class="top-sub-container">
            <div class="box box-1">
                <img src="yourChoice.png" />
                <div class="box-text">
                    This is the text of the box 1
                </div>
            </div>
            <div class="box box-2">
                <img src="yourChoice.png" />
                <div class="box-text">
                    This is the text of the box 2
                </div>
            </div>
        </div>
        <div class="box box-3">
            <img src="yourChoice.png" />
            <div class="box-text">
                This is the text of the box 3
            </div>
        </div>
    </div>
    <div class="box box-4">
        <img src="yourChoice.png" />
        <div class="box-text">
            This is the text of the box 4
        </div>
    </div>
</div>

还有这个CSS:

.container {
  display: flex;
  gap: 1rem; 
  height: 25rem;
  width: 25rem;
  padding: 1rem;
  background: pink;
}

.top-sub-container {
  flex: 1 1 auto;
  display: flex;
  gap: 1rem;
}

.sub-container {
  flex: 1 1 auto;
  display: flex;
  gap: 1rem;
  flex-direction: column;
}

.box {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  border: 1px solid black;
}

但是我遇到了我的媒体查询问题并使这个设计响应。是因为我没有使用 calc 在容器内平均分配我的 flex 项目吗?或者 calc 与此问题无关?

如果 calc 无关紧要,如何使此布局适合最大宽度为 800 像素的媒体查询?当我使用 Dev Tools 在不同的屏幕尺寸上对其进行测试时,存在很大的差距。

我正在尝试通过创建不同的媒体查询结果来修复它,但现在我想知道我是否应该创建最大数量的媒体查询。

非常感谢您的建议。

您不需要很多容器,一个 parent div 应该足以容纳“.box”类元素。使用一个 parent,媒体查询将更容易控制不同的屏幕尺寸。