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

如何在占屏幕1/3高度的容器中实现6个响应式正方形布局?

6个正方形布局参考图

我需要在高度为屏幕1/3的固定尺寸容器中展示6个正方形,效果参考上图。目前已完成布局,但在多模拟器运行时正方形会变为矩形,请问如何实现该布局并保证响应式?

实现方案

核心是强制子元素保持1:1的宽高比,同时让容器固定为视口高度的1/3,以下是两种可靠的实现方式:

方法一:CSS Grid + aspect-ratio(现代浏览器首选)

利用CSS Grid快速搭建2行3列布局,通过aspect-ratio属性直接强制正方形比例:

<div class="square-container">
  <div class="square">1</div>
  <div class="square">2</div>
  <div class="square">3</div>
  <div class="square">4</div>
  <div class="square">5</div>
  <div class="square">6</div>
</div>
/* 容器:固定高度为屏幕1/3,网格均分空间 */
.square-container {
  height: calc(100vh / 3);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(2, 1fr);
  gap: 8px; /* 正方形间的间距,可自定义 */
  box-sizing: border-box;
  padding: 8px; /* 容器内边距,可自定义 */
}

/* 正方形子元素:强制1:1宽高比 */
.square {
  aspect-ratio: 1 / 1;
  width: 100%;
  height: 100%;
  background-color: #e0e0e0; /* 示例背景色 */
  display: flex;
  align-items: center;
  justify-content: center;
}

方法二:CSS Grid + padding-top(兼容旧浏览器)

如果需要兼容不支持aspect-ratio的旧浏览器,可通过padding-top: 100%的经典技巧实现正方形:

<div class="square-container">
  <div class="square">
    <div class="square-content">1</div>
  </div>
  <div class="square">
    <div class="square-content">2</div>
  </div>
  <div class="square">
    <div class="square-content">3</div>
  </div>
  <div class="square">
    <div class="square-content">4</div>
  </div>
  <div class="square">
    <div class="square-content">5</div>
  </div>
  <div class="square">
    <div class="square-content">6</div>
  </div>
</div>
.square-container {
  height: calc(100vh / 3);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(2, 1fr);
  gap: 8px;
  box-sizing: border-box;
  padding: 8px;
}

.square {
  position: relative;
  width: 100%;
}

/* 通过padding-top让高度等于宽度,形成正方形 */
.square::before {
  content: '';
  display: block;
  padding-top: 100%;
}

.square-content {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #e0e0e0;
  display: flex;
  align-items: center;
  justify-content: center;
}

布局变形的原因

之前的布局没有绑定子元素的宽高比,当容器在不同屏幕尺寸下拉伸时,子元素的宽高会分别适配网格单元格的宽和高,导致比例失衡变成矩形。上述两种方法通过强制1:1比例,确保无论容器尺寸如何变化,子元素始终保持正方形。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:50:29