如何让Next.js Image组件像普通标签一样工作< img>?

bogh5gae  于 2023-08-04  发布在  其他
关注(0)|答案(1)|浏览(158)

我已经和这个斗争了几个小时了,我不知道该怎么办。
我有我的图像组件 Package 如下:

<div className={styles.featureImgContainer}>
  <Image
    src={
      post.feature_image
    }
    alt={post.title}
    fill
    className={styles.featureImg}
  />
</div>

字符串
使用以下样式:

.featureImgContainer {
  position: relative;
  width: 100%;
  height: 500px;
}
    
.featureImg {
  object-fit: contain;
}


在这种情况下,它不会占用容器的全部宽度,因为容器的高度限制了图像的宽度,因此它可以保持宽高比。
x1c 0d1x的数据
当我缩小viewport时,图像最终采用了整个宽度,但容器的高度导致在顶部和底部创建了不必要的边距:



问题是,如果我从图像容器中删除高度或将其设置为自动,图像就会消失。但这正是我想要实现的--让容器和图像的宽度一直保持在100%,并自动调整高度。
对于常规< img >标记,我只需将其放入一个没有指定高度的容器中,并将宽度定义为100%,图像的高度将自动调整以保持宽高比,并且不会出现白色。
如何让Next.js Image组件像这样工作?我只想把我的形象与或没有一个容器,而不必描述任何超过所需的宽度(100%在这种情况下)。

nr7wwzry

nr7wwzry1#

考虑从<Image>组件中删除fill prop,如文档所示:
[...]使图像填充父元素[...]
相反,指定一个合理的widthheight prop(可能是某个任意包含宽度的预期尺寸),然后考虑应用width: 100%; height: auto让图像填充父宽度,同时按比例缩放其高度:

.featureImg {
  width: 100%;
  height: auto;
}

字符串
.featureImgContainer中删除height声明,使元素具有height: auto,因此应该从内部<img>元素获得其高度。
请参阅在the Next.js exampleits source code中使用的技术。

相关问题