我的Next.js应用程序有一个区域,它是照片库中选定的照片,所以当人们翻阅选定的图片或加载照片时,它必须保持固定的大小。我有一个响应式布局,但如果真的按下,我会说这个像素区域是566px*425px。
我很困惑如何才能做到这一点。这是我所能得到的最接近的结果,但问题是,当纵横比超过566x425时,图像会溢出,而对于纵横比低于566x425的图像,它会在Y方向上拉伸。我真正想要的是有一个固定的框,然后如果纵横比与最大尺寸不同,你会看到信箱或者沿着侧面或者在顶部和底部。
<div
style={{
position: 'relative',
width: '566px',
height: '425px',
}}
>
<Image
src={currCommit.image.url}
alt="Current Image"
layout={'fill'}
objectFit="cover"
/>
</div>
4条答案
按热度按时间6ss1mwsb1#
哦,我明白了!关键是将父div设置为固定大小和相对大小,然后将
Image
设置为填充布局和包含objectFit。这种方法的唯一缺点是我需要设置媒体查询,以便它可以缩放为更小的大小。然后在css中我设置:
xxls0lw82#
我认为有更好的解决方案,
NextImage
有回调属性onLoadingComplete:完全加载图像并删除占位符后调用的回调函数。
onLoadingComplete函数接受一个参数,即具有以下属性的对象:自然宽度、自然高度
您可以使用natural属性设置图像比率,而不会丢失NextImage的
layout
功能,如下所示:唯一的缺点是长宽比只在图像加载后应用,因此占位符使用默认比例(在本例中为16:9 - common),这可能导致CLS
flseospp3#
根据bayu's asnwer,您可以创建一个名为
RatioNextImage
的自定义组件,并像这样使用它。单位:
RatioNextImage.tsx
wxclj1h54#
接下来的13年里,layout和objectFit都是deprecated支持内在的样式属性。这实际上使我们的工作更容易,因为你现在可以像普通CSS一样设计图像的样式,如下所示: