CSS/CSS

[CSS] object-fit

ui-o 2025. 8. 12. 16:28
반응형

object-fit

  • 정의 :  이미지, 비디오 등 박스(container) 안에 들어가는 콘텐츠의 크기 조절 및 배치 방식을 정의하는 속성
  • 주로 <img>, <video>, <iframe> 같은 요소에 적용해서, 콘텐츠가 컨테이너 크기에 맞게 어떻게 맞춰질지 결정

사용 상황

  • 반응형 이미지, 비디오 등에서 비율 유지하며 크기 맞출 때.
  • 썸네일이나 카드 내 이미지가 깨지지 않고 보기 좋게 보이도록 할 때.
  • 배경처럼 이미지가 영역을 꽉 채우게 하거나, 잘리지 않고 모두 보이도록 조절할 때.

참고 사항

  • object-fit은 block 요소에는 적용되지 않고, replaced 요소(img, video 등)에 적용됨
  • 배경 이미지처럼 background-size 속성과 비슷한 역할을 함 (하지만 object-fit은 요소 자체의 크기 조절)
  • IE는 지원하지 않으니 필요하면 폴리필을 고려해야 함

속성 값

fill (기본값)

    • 객체가 부모 요소의 너비와 높이를 꽉 채우도록 강제로 크기 조절
    • 이때 원본 비율은 유지하지 않음 → 이미지나 영상이 찌그러질 수 있음
    • 예) 400x400 이미지가 300x200 컨테이너에 들어가면 300x200으로 강제 변형
    • 실무 활용:
      • 이미지 비율 왜곡이 크게 문제가 안 되고, 공간을 완전히 채우는 게 우선인 경우.
      • 예: 배너 배경 이미지, 단순 아이콘 등에서 공간 활용 우선.


contain

  • 객체의 원본 비율을 유지하면서 부모 컨테이너 안에 완전히 들어가도록 크기를 조절
  • 부모 영역에 맞게 축소 혹은 확대되지만, 빈 공간이 생길 수 있음
  • 예) 400x400 이미지는 300x200 컨테이너에서 200x200 크기로 축소되어, 상하 또는 좌우에 빈 공간 발생.
  • 실무 활용:
    • 이미지의 전체가 보여져야 할 때.
    • 예: 프로필 사진, 썸네일 이미지, 상품 이미지 등.
    • 컨테이너 크기에 맞게 비율 유지가 중요할 때.

S


cover

  • 객체의 원본 비율을 유지하면서 부모 컨테이너를 완전히 덮도록 크기를 조절
  • 이미지 일부가 잘릴 수 있지만 빈 공간 없이 꽉 찬 상태를 만듦
  • 예) 400x400 이미지는 300x200 컨테이너에서 300x300으로 확대되어 상하가 잘림
  • 실무 활용:
    • 공간을 완전히 채우는 게 중요하고, 일부 자름이 허용되는 경우.
    • 예: 카드 배경 이미지, 히어로 이미지, 커버 사진 등.
    • 시각적 임팩트를 위해 꽉 찬 이미지가 필요할 때.


none

  • 객체의 크기를 전혀 변경하지 않고 원본 크기를 유지
  • 부모보다 크면 넘치거나 잘릴 수 있고, 작으면 빈 공간이 생김.
  • 예) 400x400 이미지는 300x200 컨테이너에서 400x400 크기로 표시되어 부모를 넘침.
  • 실무 활용:
    • 원본 크기가 중요하고, 크기 조절이 필요 없거나 별도 스타일로 조절할 때.
    • 예: 아이콘, 로고, 또는 스크립트로 크기 조절을 직접 제어하는 경우.


scale-down

  • none과 contain 중에서 더 작은 크기를 자동 선택해서 적용
  • 이미지가 부모보다 크면 축소(비율 유지), 작으면 원본 크기 유지.
  • 예) 원본이 400x400이고 부모가 300x200이면 200x200으로 축소되고, 원본 150x100이면 그대로 유지됨.
  • 실무 활용:
    • 이미지 크기가 다양할 때, 부모를 넘지 않으면서 가능한 원본 크기를 유지하고 싶을 때.
    • 예: 다양한 크기의 유저 업로드 이미지 처리, 반응형 이미지에서 크기 제한 필요할 때.

반응형

'CSS > CSS' 카테고리의 다른 글

[CSS] Grid와 Flex에서의 gap  (2) 2025.08.14
[CSS] background 속성  (1) 2025.08.12
[CSS] clamp() 함수  (2) 2025.08.08
[CSS] backdrop-filter  (0) 2025.06.27
[CSS] aspect-ratio  (0) 2025.06.27