使用next/image制作不同大小的图像以响应

xeufq47z  于 2023-04-05  发布在  其他
关注(0)|答案(2)|浏览(239)

我在我的项目中使用next.js版本12。我有包含不同大小图像的块。我想使用next/image,但我是新手,不知道如何使不同大小的图像响应。
如果我使用layout=“responsive”,我需要固定大小,但我有不同的大小:

<Image src={`/images/${image}`} key={item} width={500} height={300} layout={'responsive'} />

当我使用layout=“fill”时,我需要给父div给予大小,这又不是我想要的。有没有一种方法可以实现我想要的,而不需要编写一个函数来检查每个图像的大小并将其提供给图像组件?

mlnl4t2r

mlnl4t2r1#

这并不容易发现,但正确的食谱应该是这样的:

<Image
    sizes="(min-width: 768px) 80px, 60px"
    layout="responsive"
    alt="Logo IE"
    width={230}
    height={208}
    src="/src/image.jpg"
  />

我使用宽度和高度与最大大小(帮助下一个知道纵横比)和大小属性来设置大小,以在不同的分辨率中使用,如下所示:https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images#resolution_switching_different_sizes

vybvopom

vybvopom2#

有一种方法可以做到这一点。首先,你用容器 Package 图像。

<div className={'image-container'}>
  <Image src={path} layout="fill" className={'image'} />
</div>

然后添加CSS:

.image-container {

  width: 100%;

  > div {
    position: unset !important;
  }

  .image {
    object-fit: contain;
    width: 100% !important;
    position: relative !important;
    height: unset !important;
  }
}

相关问题