tailwind, relative, overflow-hidden, fill, objectFit

강연주·2025년 6월 5일

📚 TIL

목록 보기
167/186

이미지를 div 컨테이너에 딱 맞추려면 Next.js의 Image 컴포넌트에서 fill 속성과 object-fit 스타일을 사용하는 것이 가장 좋습니다. 다음과 같이 수정해보세요:이미지 컨테이너 수정 코드코드 // 기존 코드를 다음과 같이 수정하세요:

<div className="relative flex h-[14.5rem] w-[29.2rem] items-center justify-center rounded-[1rem] border-[0.1rem] border-gray-light overflow-hidden">
  {previewImage ? (
    <Image 
      src={previewImage} 
      alt="미리보기 이미지
      

주요 변경사항들

relative 클래스 추가: fill 속성을 사용하려면 부모 요소가 position: relative여야 합니다.
overflow-hidden 추가: 이미지가 컨테이너를 벗어나지 않도록 합니다.
fill 속성 사용: width와 height 대신 fill을 사용하면 부모 컨테이너를 가득 채웁니다.
objectFit: 'cover': 이미지 비율을 유지하면서 컨테이너를 완전히 채웁니다. 필요시 이미지가 잘릴 수 있지만 왜곡되지는 않습니다.
rounded-[1rem] 클래스: 이미지 자체에도 둥근 모서리를 적용합니다.

만약 이미지가 잘리는 것보다 전체 이미지를 보는 것을 원한다면 objectFit: 'contain'으로 변경할 수 있습니다. 이 경우 이미지 전체가 보이지만 컨테이너에 여백이 생길 수 있습니다.


내 말은 style={{ objectFit: 'fill' }} 이 부분을 아예 안 쓰니까 이미지 비율이 왜곡되면서 꽉 차던데, 그건 뭐때문이야

아, 이제
이해했어요! 제가 틀렸네요.
Next.js Image 컴포넌트의 fill 속성을 사용할 때 objectFit을 지정하지 않으면 기본값이 'fill'입니다.
즉:
jsx<Image src="..." alt="..." fill /> // objectFit 미지정
이건 실제로는:
jsx<Image src="..." alt="..." fill style={{ objectFit: 'fill' }} />
와 동일하게 동작합니다.

Next.js Image의 기본 동작:

fill 사용 + objectFit 미지정 = objectFit: 'fill' (강제 채우기, 왜곡 발생)
이미지를 컨테이너 크기에 맞춰 강제로 늘리거나 줄임

명시적으로 지정해야 하는 경우:

style={{ objectFit: 'cover' }} → 비율 유지하면서 채우기 (일부 잘릴 수 있음)
style={{ objectFit: 'contain' }} → 전체 이미지 보이게 하기 (여백 생길 수 있음)

그래서 당신이 style={{ overflow: "cover" }}로 잘못 썼을 때도 기본값인 objectFit: 'fill'이 적용되어서 이미지가 왜곡되면서 꽉 찬 거였어요!

profile
아무튼, 개발자

0개의 댓글