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

如何按高度调整Next.js中Image组件的尺寸

Next.js Image 组件统一不同宽高比图片高度的实现方案

核心实现逻辑

  • 外层容器设置你需要的统一目标高度,若需要横向排列多张图片,添加弹性布局属性保证对齐
  • 每张图片单独套一个相对定位的父容器,高度继承外层容器的100%,宽度自适应
  • Image组件开启填充模式,设置object-fit属性保证图片按原始比例适配,不变形

代码示例

样式代码

/* 外层图片容器 */
.gallery-wrapper {
  height: 300px; /* 此处修改为你需要的统一高度 */
  display: flex;
  gap: 16px;
  align-items: center;
}

/* 单张图片的父容器 */
.image-item-wrap {
  position: relative;
  height: 100%;
  width: auto;
}

组件代码(Next.js 13+ App Router 版本)

import Image from 'next/image'

// 示例服务端返回的图片数据
const serverImages = [
  { id: 1, url: "/pic1.jpg", alt: "示例图1" },
  { id: 2, url: "/pic2.jpg", alt: "示例图2" },
  { id: 3, url: "/pic3.jpg", alt: "示例图3" },
]

export default function UniformHeightGallery() {
  return (
    <div className="gallery-wrapper">
      {serverImages.map(img => (
        <div key={img.id} className="image-item-wrap">
          <Image
            src={img.url}
            alt={img.alt}
            fill
            style={{
              objectFit: "contain"
            }}
          />
        </div>
      ))}
    </div>
  )
}

兼容Next.js 12及更早版本

把Image组件的fill属性替换为layout="fill"即可,其余逻辑完全一致。

注意事项

  • 若使用远程图片,需要在next.config.js中配置对应的图片域名白名单,否则Next.js会抛出加载错误
  • 如果需要图片填满父容器,允许裁剪超出部分,把objectFit的值改为cover即可
  • 若外层容器总宽度有限,可添加overflow-x: auto属性实现横向滚动展示多张图片

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:09:01