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

如何让Bento 2占据Bento 1剩余宽度并调整至布局中间?

解决Bento便当盒布局的两个需求

实现思路

  1. 让bento-2占据bento-1剩余空间:通过CSS Grid定义两列,第一列固定70%宽度,第二列自动填充剩余空间;同时让bento-1跨两行,占据左侧整列高度。
  2. 将bento-2居中到四个区域的中间:利用Grid的place-self: center属性,让bento-2在自身网格单元格内垂直水平居中,结合跨两行的设置,就能处于右侧区域的中心位置(对应原四个便当盒的中间区域)。

完整代码示例

HTML

<div class="bento-container">
  <div class="bento-item bento-1">Bento 1</div>
  <div class="bento-item bento-2">Bento 2</div>
  <!-- 若保留原四个便当盒区域,可添加以下两个元素 -->
  <!-- <div class="bento-item bento-3">Bento 3</div>
  <div class="bento-item bento-4">Bento 4</div> -->
</div>

CSS

.bento-container {
  display: grid;
  /* 第一列70%宽,第二列自动占剩余空间 */
  grid-template-columns: 70% 1fr;
  /* 两行高度均分 */
  grid-template-rows: 1fr 1fr;
  width: 100%;
  height: 500px; /* 可按需调整高度 */
  gap: 10px; /* 便当盒间距 */
  padding: 10px;
  box-sizing: border-box;
}

.bento-item {
  border: 2px solid #333;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
}

.bento-1 {
  /* 跨两行占据左侧整列 */
  grid-row: 1 / -1;
  background-color: #fdd835;
}

.bento-2 {
  /* 跨两行占据右侧整列,并居中 */
  grid-row: 1 / -1;
  place-self: center;
  /* 自定义宽高避免占满右侧区域 */
  width: 80%;
  height: 60%;
  background-color: #4caf50;
}

/* 若保留四个便当盒区域的结构,可替换为以下配置:
.bento-container {
  grid-template-columns: 70% 30%;
  grid-template-rows: 1fr 1fr;
}
.bento-1 { grid-column: 1 / 2; grid-row: 1 / 2; }
.bento-3 { grid-column: 1 / 2; grid-row: 2 / 3; }
.bento-2 { grid-column: 2 / 3; grid-row: 1 / -1; place-self: center; }
此时bento-2正好处于四个区域的中间位置 */

关键说明

  • grid-template-columns: 70% 1fr比纯百分比更灵活,能自动计算剩余空间,避免宽度计算误差。
  • grid-row: 1 / -1让元素跨越所有行,确保bento-1和bento-2分别占据左右侧完整高度。
  • place-self: center等价于align-self: center + justify-self: center,能快速实现元素在网格单元格内的居中,完美匹配“四个区域中间位置”的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:22:34