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

如何适配不同尺寸图片实现响应式网格布局:桌面4列平板/移动端2列

你现有代码的核心问题如下:

  • object-fit属性仅对img等替换元素生效,写在.services容器上不会生效,无法控制图片裁剪逻辑
  • 未给img标签设置宽高规则,图片会按原始尺寸展示,导致容器被撑开、排列错位
  • 使用float布局需要额外处理浮动塌陷问题,且对齐控制不如Grid布局方便
  • 原始代码给.services设置100vh高度不符合常规图片展示需求,会导致区域过高

最优解决方案(使用CSS Grid实现)

Grid是原生的网格布局方案,不用处理浮动相关的兼容问题,代码更简洁可控。

1. 修改HTML结构

给外层容器加专属类名,同时修正img单标签不需要闭合的语法错误:

<div class="services-grid">
  <div class="services-item">
    <img src="./Photos/services-1.jpg" alt="服务展示图">
  </div>
  <div class="services-item">
    <img src="./Photos/services-2.jpg" alt="服务展示图">
  </div>
  <div class="services-item">
    <img src="./Photos/services-3.jpg" alt="服务展示图">
  </div>
  <div class="services-item">
    <img src="./Photos/services-4.jpg" alt="服务展示图">
  </div>
</div>

2. 替换CSS规则

/* 外层网格容器 */
.services-grid {
  display: grid;
  /* 桌面端默认4列等宽 */
  grid-template-columns: repeat(4, 1fr);
  /* 可根据需求调整网格间距,不需要可以删除 */
  gap: 8px;
  width: 100%;
}

/* 图片容器 */
.services-item {
  /* 固定容器宽高比,1/1是正方形,可根据需求改成4/3等比例 */
  aspect-ratio: 1 / 1;
  overflow: hidden;
}

/* 图片适配规则 */
.services-item img {
  width: 100%;
  height: 100%;
  /* 图片裁剪填充容器,不变形 */
  object-fit: cover;
}

/* 平板、移动端适配,断点可自定义调整 */
@media only screen and (max-width: 1180px) {
  .services-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:27:03