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

如何使用CSS Grid实现指定响应式布局?修正代码宽度问题

CSS Grid布局优化方案

问题描述

我是CSS Grid新手,此前尝试用Flex无法实现目标布局,转而使用Grid编写了代码,但当前代码中item4与item5宽度一致,需求是item4占item5宽度的60%,同时需实现全视口响应式,第三列需匹配附图样式,请求优化代码。

原CSS代码

.co-sculpting-grid {
  display: grid;
  grid-template-columns: minmax(0, 264px) minmax(0, 369px) minmax(0, 465px);
  grid-template-rows: minmax(0, 264px) minmax(0, 264px);
  grid-gap: 24px;
}

.co-sculpting-grid>div {
  background-color: floralwhite;
  padding: 20px 0;
  font-size: 18px;
  border: 1px solid black;
  display: flex;
  justify-content: center;
  align-items: center;
}

.item1 {
  grid-row-start: 1;
  grid-row-end: 2;
}

.item2 {
  grid-row-start: 2;
  grid-row-end: 3;
}

.item3 {
  grid-row-start: 1;
  grid-row-end: 3;
}

.item4 {
  grid-row-start: 1;
  grid-row-end: 2;
  max-width: 264px;
}

.item5 {
  grid-row-start: 2;
  grid-row-end: 3;
}

原HTML代码

<div className="co-sculpting-grid">
  <div className="item1"></div>
  <div className="item2"></div>
  <div className="item3"></div>
  <div className="item4"></div>
  <div className="item5"></div>
</div>

优化后代码

优化后的CSS代码

.co-sculpting-grid {
  display: grid;
  /* 使用fr单位实现响应式列布局,比例可按需调整 */
  grid-template-columns: 1fr 2fr 2fr;
  grid-auto-rows: minmax(264px, auto);
  gap: 24px;
  padding: 24px;
  box-sizing: border-box;
  width: 100vw;
  min-height: 100vh;
}

.co-sculpting-grid>div {
  background-color: floralwhite;
  padding: 20px 0;
  font-size: 18px;
  border: 1px solid black;
  display: flex;
  justify-content: center;
  align-items: center;
}

.item1 {
  grid-row: 1 / 2;
}

.item2 {
  grid-row: 2 / 3;
}

.item3 {
  /* 跨两行布局,匹配附图样式 */
  grid-row: 1 / span 2;
}

/* 第三列的子容器,用于控制item4和item5的宽度比例 */
.item-container {
  display: grid;
  grid-template-rows: 1fr 1fr;
  gap: 24px;
}

.item4 {
  /* 占item5宽度的60% */
  width: 60%;
  /* 可选:左对齐,若需居中可改为justify-self: center */
  justify-self: start;
}

.item5 {
  width: 100%;
}

优化后的HTML代码

<div class="co-sculpting-grid">
  <div class="item1">item1</div>
  <div class="item2">item2</div>
  <div class="item3">item3</div>
  <div class="item-container">
    <div class="item4">item4</div>
    <div class="item5">item5</div>
  </div>
</div>

关键优化点

  • 响应式适配:用fr单位替代固定像素值,列宽随视口自动调整,实现全视口响应式
  • 比例控制:通过第三列的子Grid容器,精准实现item4宽度为item5的60%
  • 布局匹配:保留item3跨两行的设置,与目标附图样式一致
  • 代码简化:简化grid-row写法,提升可读性;添加box-sizing: border-box避免内容溢出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:33:32