如何在Next.js 13 <Image>中使用objectFit?

回答 3 浏览 6414 2022-10-26

在版本历史下的next/image docs中,它对v13.0.0有如下说明:

layout, objectFit, objectPosition, lazyBoundary, lazyRoot props removed.

fill的next/image 文档下,文档指出我们可以对象设置为object-fit: "contain"object-fit: "cover"。我无法设置适合覆盖以下代码的对象:

<div className="relative">
  <Image
      src=""
      alt=""
      fill={true}
      layout="fill"
      object-fit="cover"
    />
</div>

如何用Next.js 13实现object-fit呢?

MGamboa 提问于2022-10-26
你可以直接通过CSS来设置它。例如,你可以这样做。style={{ objectFit: 'cover' }}.见nextjs.org/docs/api-reference/next/image#stylejuliomalves 2022-10-29
3 个回答
#1楼 已采纳
得票数 23

NextJS Image 组件现在支持 style 属性,所以我相信这是正确的答案:

<div style={{position:"relative"}}>
  <Image
      src={source}
      alt=""
      fill
      style={{objectFit:"cover"}}
    />
</div>

父容器相对定位。

Čedomir Babić 提问于2022-11-27
这救了我的命 - 谢谢。感觉这个文档的解释不是很好。barrylachapelle 2023-02-26
另外,我喜欢以前的方式,即仅仅将高度和宽度定义为长宽比,如height="3" width="4"。这种严格定义高度和宽度的新方法似乎很愚蠢。Čedomir Babić 2023-02-26
这真的很蹩脚。我做了同样的事情--用高度/宽度来注入图像比例,然后用layout="responsive"来确定父图像的大小。我的所有图片都在markdown文件中,而codemod不能在markdown上运行。唉--我有几百张图片要修复。我来了:(Python)barrylachapelle 2023-02-27
#2楼
得票数 3

在next.js中,objectFit=layout=都从图像组件中被废弃,必须用styleclassName来实现。Fill是一个布尔值,如果不应用则为假,如果存在则为真。

<div className="relative">
  <Image
      src="/"
      alt="logo"
      fill
      style={{objectFit:"contain"}}
    />
</div>

参考:

DevKev 提问于2022-12-15
DevKev 修改于2022-12-15
#3楼
得票数 0

在objectFit中使用填充物与骆驼的情况对我来说是有效的。

<div className="relative">
  <Image
      src=""
      alt=""
      fill
      objectFit="contain"
    />
</div>

我发现这个备忘单很有帮助。祝您好运!

TimTh 提问于2022-11-08