Next.jsのnext/imageを使って親要素のサイズに画像を合わせる
next/imageを使って画像を表示するときに、親要素のサイズを満たすように画像を表示したい場合です。
例えば、親要素が300*300で、画像が300*350だったとします。
縦横の比率は同じままで、親要素を隙間なく画像を表示したい場合は以下のようにします。
<div style={{position: 'relative', width: '300px', height: '300px'}}>
<Image src={img1} layout='fill' objectFit='cover' />
</div>
layout=’fill’で親要素のwidthとheightに合わせて画像のwidthとheightが決まります。
そして、objectFit=’cover’ により、縦横比を変えることなく、サイズに収まるように表示されます。
今回の例の場合は、画像の方が高さが50px大きいため、この部分が切り取られた状態で表示されます。
ここで要注意なのは、親要素に position: 'relative’ を設定する必要があることです。
さもないと、画像が画面一杯に引き伸ばされて表示されます。
このことはドキュメントにも記載されています。
https://nextjs.org/docs/basic-features/image-optimization#styling
When using
fill
, the parent element must haveposition: relative
This is necessary for the proper rendering of the image element in that layout mode.
最近のコメント