min/max-width/height의 역할은?

min-width, max-width, min-height, max-height 속성으로 요소의 크기에 제약을 두어 반응형 레이아웃에서 콘텐츠가 적절한 범위 내에서 조절되도록 제어하는 방법을 익힙니다

중급 15분 min-width max-width 제약 기반 반응형

CSS에서 요소의 크기를 지정할 때 width와 height만으로는 다양한 화면 환경에 유연하게 대응하기 어렵습니다. min-width, max-width, min-height, max-height는 요소의 크기에 “하한선”과 “상한선”을 설정하여, 콘텐츠가 특정 범위 안에서만 늘어나거나 줄어들도록 제약을 거는 속성입니다. 이 속성들은 고정 크기 지정과 완전한 유동 크기 사이의 균형점을 제공하며, 반응형 웹 디자인의 핵심 도구로 자리잡고 있습니다. width나 height가 “이 크기로 만들어라”라는 명령이라면, min/max 속성들은 “이 범위를 벗어나지 마라”라는 제약 조건에 해당합니다. 이 제약 기반 사고방식을 이해하면 화면 크기가 달라져도 깨지지 않는 레이아웃을 설계할 수 있습니다.

🔑 핵심 특징

  • 제약 기반 크기 제어: 고정값이 아닌 허용 범위를 지정하여 요소가 환경에 맞게 유연하게 조절됨
  • width/height보다 높은 우선순위: min-width는 width보다 강하고, max-width는 width를 덮어쓸 수 있어 크기 충돌 시 예측 가능한 결과를 보장함
  • 반응형 레이아웃의 안전장치: 뷰포트가 극단적으로 작거나 클 때에도 콘텐츠가 읽을 수 없을 만큼 줄어들거나 과도하게 넓어지는 것을 방지함
  • 콘텐츠 오버플로우 방지: max-height를 활용하면 동적으로 늘어나는 콘텐츠가 레이아웃을 밀어내는 현상을 제어할 수 있음
  • 유동적 타이포그래피와의 조합: 퍼센트, vw 단위와 함께 사용하면 텍스트 가독성을 유지하면서도 화면 크기에 반응하는 레이아웃 구현이 가능함

📐 실무에서의 영향

실무 웹 개발에서 min/max 크기 속성은 거의 모든 반응형 컴포넌트에 적용됩니다. 예를 들어, 카드 컴포넌트에 min-width를 설정하면 화면이 좁아져도 카드가 내용을 표시할 수 없을 만큼 작아지지 않고, max-width를 설정하면 넓은 화면에서 카드가 지나치게 늘어나 레이아웃의 균형이 무너지는 것을 막을 수 있습니다. 이미지 갤러리나 미디어 요소에 max-width: 100%를 적용하는 패턴은 반응형 이미지의 기본 기법으로, 이미지가 부모 컨테이너를 넘쳐 가로 스크롤을 유발하는 문제를 원천적으로 차단합니다. 모달, 사이드바, 네비게이션 같은 UI 패턴에서도 min/max 속성으로 적절한 크기 범위를 잡아두면, 미디어 쿼리 브레이크포인트 사이의 중간 화면 크기에서도 자연스러운 레이아웃을 유지할 수 있습니다. 결과적으로 이 속성들을 체계적으로 활용하면 미디어 쿼리에 대한 의존도를 줄이면서도 더 견고하고 유지보수하기 쉬운 반응형 디자인을 구현할 수 있습니다. 특히 Flexbox나 Grid와 결합했을 때 그 효과가 극대화되어, 복잡한 레이아웃에서도 각 요소가 합리적인 크기 범위 내에서 동작하도록 보장합니다.


핵심 개념

min-width와 min-height

입문

min-width와 min-height는 요소가 일정 크기 이하로 줄어들지 못하게 막아주는 속성이에요. “최소한 이만큼은 되어야 해!”라고 정해주는 거죠.

📏 최소 크기가 뭔가요? 여러분이 종이접기를 한다고 생각해보세요. 종이를 계속 접다 보면 어느 순간 더 이상 접을 수 없는 크기가 되죠? min-width는 바로 그런 거예요. 요소가 아무리 줄어들려고 해도 “여기까지만!” 하고 멈추게 해주는 최소 크기 제한이에요.

🏠 왜 최소 크기가 필요한가요? 스마트폰으로 웹사이트를 볼 때, 화면이 작아서 버튼이나 글자가 너무 작아지면 읽을 수도, 누를 수도 없겠죠? min-width를 설정하면 화면이 아무리 작아져도 버튼이 일정 크기 이하로 줄어들지 않아서 항상 사용할 수 있어요.

📦 min-height는 뭐가 다른가요? min-width가 가로 방향의 최소 크기라면, min-height는 세로 방향의 최소 크기예요. 예를 들어, 글이 한 줄밖에 없는 카드도 min-height를 설정하면 일정 높이를 유지해서 다른 카드들과 크기가 비슷하게 보여요.

🎯 어디에 쓰이나요? 버튼, 입력창, 카드, 사이드바 같은 것들에 자주 사용돼요. “이 버튼은 최소 가로 120px은 되어야 해”처럼 설정하면, 안에 글자가 짧든 길든 버튼이 너무 작아 보이지 않아요.

중급

min-width와 min-height는 요소의 최소 크기를 지정하는 속성입니다. 요소의 실제 콘텐츠나 width/height 값이 이보다 작더라도, 최소값 이하로는 줄어들지 않습니다.

기본 동작 원리 min-width의 기본값은 auto이며, 이는 대부분의 경우 0으로 동작합니다. 단, Flexbox와 Grid 자식 요소에서는 auto가 콘텐츠 크기로 해석되어 예상치 못한 오버플로우가 발생할 수 있습니다. 이때 min-width: 0을 명시적으로 설정하여 해결합니다.

/* 버튼이 최소 120px 너비를 유지 */
.button {
  min-width: 120px;
  padding: 8px 16px;
}

/* 사이드바가 최소 200px 유지 */
.sidebar {
  min-width: 200px;
  width: 25%;
}

Flexbox에서의 min-width: auto 문제 Flex 아이템은 기본적으로 min-width: auto가 콘텐츠 최소 크기로 동작합니다. 긴 텍스트가 있으면 아이템이 줄어들지 않아 컨테이너를 넘칠 수 있습니다.

/* 문제: 긴 텍스트가 flex 컨테이너를 넘침 */
.flex-item {
  /* min-width: auto (기본값) → 콘텐츠만큼 최소 크기 유지 */
}

/* 해결: min-width를 0으로 리셋 */
.flex-item {
  min-width: 0; /* 콘텐츠보다 작아질 수 있도록 허용 */
  overflow: hidden;
  text-overflow: ellipsis;
}

심화

min-width와 min-height는 CSS 박스 모델의 크기 결정 알고리즘에서 최종 사용 값(used value)에 하한 제약(lower bound constraint)을 부여하는 속성입니다.

CSS Box Sizing 명세의 크기 결정 과정 W3C CSS Box Sizing Module Level 3에 따르면, 요소의 최종 크기는 여러 단계의 제약 해결(constraint resolution)을 거칩니다. min-width는 이 과정에서 “tentative used width”가 결정된 후 적용되는 하한 클램프(lower clamp)로 동작합니다. 명세에서 정의하는 크기 결정 순서는 다음과 같습니다:

  1. 지정 값(specified value)에서 계산 값(computed value) 도출
  2. 레이아웃 알고리즘이 임시 사용 크기(tentative used size) 결정
  3. min/max 제약 적용: max(min-width, min(max-width, tentative-width))

이 클램핑 공식은 CSS2.1 Section 10.4에서 정의된 것으로, 모든 블록 레벨 및 인라인 레벨 요소에 동일하게 적용됩니다.

Flexbox에서의 Automatic Minimum Size CSS Flexbox Level 1 명세 Section 4.5에서 정의하는 “automatic minimum size”는 일반 블록 요소와 다른 동작을 합니다. Flex 아이템의 min-width: automin-content sizespecified size(있는 경우) 중 작은 값으로 해석됩니다. 이는 Flex 아이템이 콘텐츠를 잘리지 않게 보호하려는 설계 의도에서 비롯되었으나, 실무에서는 오버플로우 문제의 주요 원인이 됩니다. Grid 아이템에서도 동일한 메커니즘이 CSS Grid Level 1 명세에 정의되어 있습니다.

브라우저 렌더링 엔진의 크기 계산 Blink(Chrome)과 Gecko(Firefox) 엔진은 레이아웃 트리 순회(layout tree traversal) 과정에서 min/max 제약을 적용합니다. Blink의 경우 LayoutBox::ComputeLogicalWidth() 메서드에서 min-width 클램핑이 수행되며, 이 계산은 부모→자식 방향의 레이아웃 패스에서 한 번만 실행됩니다. min-width가 퍼센트 값일 경우, 포함 블록(containing block)의 크기가 확정된 후에야 해석 가능하므로, 레이아웃 패스가 추가로 필요할 수 있습니다.

max-width와 max-height

입문

max-width와 max-height는 요소가 일정 크기 이상으로 커지지 못하게 막아주는 속성이에요. “아무리 커도 여기까지만!”이라고 정해주는 거예요.

📐 최대 크기가 뭔가요? 풍선에 바람을 넣는다고 생각해보세요. 계속 넣으면 점점 커지다가 터지겠죠? max-width는 풍선이 일정 크기 이상 커지지 않도록 “여기서 멈춰!”라고 제한해주는 거예요. 요소가 아무리 늘어나려 해도 정해진 최대 크기에서 멈춰요.

🖼️ 이미지에는 왜 필요한가요? 큰 사진을 작은 액자에 넣으려면 사진을 줄여야 하죠? 웹에서도 마찬가지예요. 큰 이미지가 화면 밖으로 삐져나오면 가로 스크롤이 생기는데, max-width를 설정하면 이미지가 액자(부모 요소) 안에 딱 맞게 줄어들어요.

📱 넓은 화면에서는요? 큰 모니터로 웹사이트를 볼 때, 글줄이 화면 끝까지 쭉 늘어나면 읽기 불편하죠? max-width를 설정하면 글줄의 너비가 적당한 선에서 멈춰서, 큰 화면에서도 읽기 편한 레이아웃을 유지해줘요.

💡 max-height는 언제 쓰나요? 댓글이 100개가 달린 게시판을 상상해보세요. 댓글이 끝없이 늘어나면 페이지가 너무 길어지죠? max-height를 설정하면 댓글 영역의 높이가 일정 크기에서 멈추고, 나머지는 스크롤로 볼 수 있어요.

중급

max-width와 max-height는 요소의 최대 크기를 제한합니다. 기본값은 none으로, 제한이 없는 상태입니다. 요소의 콘텐츠나 지정된 width/height가 이 값을 초과하면 max 값으로 잘립니다.

반응형 이미지의 기본 패턴 이미지에 max-width: 100%를 적용하는 것은 반응형 웹의 가장 기본적인 기법입니다. 이미지의 원본 크기가 부모보다 크면 부모에 맞게 축소되고, 작으면 원본 크기를 유지합니다.

/* 반응형 이미지 기본 패턴 */
img {
  max-width: 100%; /* 부모보다 커지지 않음 */
  height: auto;    /* 비율 유지 */
}

/* 콘텐츠 영역 최대 너비 제한 */
.content {
  max-width: 720px; /* 가독성을 위한 최대 너비 */
  margin: 0 auto;   /* 중앙 정렬 */
  width: 100%;       /* 좁은 화면에서는 100% */
}

max-height와 오버플로우 max-height를 사용할 때는 반드시 overflow 속성을 함께 고려해야 합니다. 콘텐츠가 max-height를 초과하면 넘친 부분의 처리 방법을 지정하지 않으면 콘텐츠가 요소 밖으로 흘러나옵니다.

/* 댓글 목록 높이 제한 */
.comment-list {
  max-height: 400px;
  overflow-y: auto; /* 넘치면 스크롤 */
}

/* 드롭다운 메뉴 높이 제한 */
.dropdown-menu {
  max-height: 300px;
  overflow-y: auto;
}

심화

max-width와 max-height는 CSS 크기 결정 알고리즘에서 상한 제약(upper bound constraint)을 부여하며, min 속성과 함께 클램핑 함수를 구성합니다.

Intrinsic Sizing과 max-width의 상호작용 CSS Intrinsic & Extrinsic Sizing Module Level 3에서 정의하는 고유 크기(intrinsic size) 개념은 max-width와 밀접한 관련이 있습니다. 대체 요소(replaced element, 예: img, video)는 고유 너비(intrinsic width)를 가지며, max-width: 100%가 적용되면 고유 너비와 포함 블록 너비 중 작은 값이 사용 값이 됩니다. 이때 height: auto와 결합하면 고유 비율(intrinsic ratio)에 따라 높이가 자동 조정됩니다.

비대체 요소(non-replaced element)에서 max-width: 100%는 다르게 동작합니다. 블록 레벨 요소의 경우 기본 width가 이미 auto(포함 블록의 100%)이므로 max-width: 100%는 사실상 효과가 없습니다. 이는 대체 요소와 비대체 요소의 크기 결정 알고리즘 차이에서 비롯됩니다.

max-height와 퍼센트 값의 해석 max-height에 퍼센트 값을 지정하면, 포함 블록의 높이가 명시적으로 지정되지 않은 경우 none으로 해석됩니다. 이는 CSS2.1 Section 10.7에서 정의된 동작으로, 높이의 퍼센트 해석이 너비와 근본적으로 다른 이유는 CSS의 레이아웃 모델이 “shrink-to-fit width, grow-to-fit height”를 기본 원칙으로 하기 때문입니다. Flexbox와 Grid 컨텍스트에서는 이 제약이 완화되어, 부모의 명시적 높이 없이도 퍼센트 max-height가 동작할 수 있습니다.

렌더링 성능 측면 max-width/max-height는 레이아웃 계산에서 추가 비교 연산만 수행하므로 성능 비용이 매우 낮습니다. 그러나 max-height에 퍼센트 값을 사용하면 포함 블록 체인을 거슬러 올라가며 해석해야 하므로, 깊은 중첩 구조에서는 레이아웃 패스 비용이 증가할 수 있습니다. 실무적으로는 무시 가능한 수준이지만, 수천 개의 리스트 아이템에 퍼센트 기반 max-height를 적용하는 것은 피하는 것이 좋습니다.

속성 간 우선순위와 충돌 해결

입문

width, min-width, max-width가 서로 다른 값을 가지면 누가 이길까요? CSS에는 이런 충돌을 해결하는 확실한 규칙이 있어요.

⚖️ 세 명이 동시에 말하면? 선생님이 “키 150cm로 서!”라고 하고, 엄마가 “최소 160cm은 되어야 해!”라고 하고, 아빠가 “180cm 넘으면 안 돼!”라고 한다면 누구 말을 들어야 할까요? CSS에서도 비슷한 상황이 생겨요. width, min-width, max-width가 서로 다른 값을 가질 때 말이에요.

🥇 누가 가장 강한가요? min-width가 가장 강해요! width가 200px이어도 min-width가 300px이면 요소는 300px이 돼요. “최소 이만큼은 되어야 해”라는 약속이 가장 우선이거든요. 마치 안전 규칙처럼, 절대 어길 수 없는 거예요.

🥈 그다음은요? max-width가 두 번째로 강해요. width가 500px이어도 max-width가 400px이면 요소는 400px이 돼요. 하지만 min-width보다는 약해요.

🤔 min과 max가 충돌하면요? 만약 min-width가 500px이고 max-width가 300px이면 어떻게 될까요? 이때는 min-width가 이겨요! 요소는 500px이 됩니다. 최소 보장이 최대 제한보다 항상 우선하는 거예요.

💡 정리하면? 가장 강한 순서는 min-width > max-width > width예요. 이 규칙만 기억하면 크기 충돌이 생겨도 결과를 예측할 수 있어요.

중급

width, min-width, max-width가 동시에 지정되면 브라우저는 정해진 우선순위에 따라 최종 크기를 결정합니다.

우선순위 규칙

  1. min-widthmax-width보다 크면 → min-width 승리
  2. max-widthwidth보다 작으면 → max-width 승리
  3. min-widthwidth보다 크면 → min-width 승리

이를 공식으로 표현하면: 최종 크기 = max(min-width, min(max-width, width))

/* Case 1: min-width > width → min-width 승리 */
.box-a {
  width: 200px;
  min-width: 300px;
  /* 최종 너비: 300px */
}

/* Case 2: max-width < width → max-width 승리 */
.box-b {
  width: 500px;
  max-width: 400px;
  /* 최종 너비: 400px */
}

/* Case 3: min-width > max-width → min-width 승리 */
.box-c {
  width: 350px;
  min-width: 500px;
  max-width: 300px;
  /* 최종 너비: 500px (min이 max보다 우선) */
}

height에도 동일한 규칙 적용 height, min-height, max-height 사이에서도 완전히 동일한 우선순위가 적용됩니다. 최종 높이 = max(min-height, min(max-height, height))

심화

CSS의 크기 제약 해결은 수학적 클램핑 함수로 정의되며, 이 알고리즘은 모든 크기 속성에 일관되게 적용됩니다.

CSS2.1 Section 10.4의 제약 해결 알고리즘 명세는 width, min-width, max-width의 충돌 해결을 다음 알고리즘으로 정의합니다. 먼저 “tentative used width”를 width 속성의 계산 값으로 결정한 뒤, 다음 규칙을 순서대로 적용합니다:

  1. tentative > max-width이면 → max-width를 사용
  2. 위 결과가 < min-width이면 → min-width를 사용

이는 수학적으로 clamp(min-width, width, max-width)와 동치이며, min-width > max-width인 경우 min-width가 우선한다는 것을 내포합니다. 이 동작은 명세에 명시적으로 “If min-width is greater than max-width, max-width is treated as if it had the same value as min-width”라고 기술되어 있습니다.

CSS 함수 clamp()와의 관계 CSS Values and Units Module Level 4에서 도입된 clamp(MIN, VAL, MAX) 함수는 이 제약 해결 알고리즘을 선언적으로 표현한 것입니다. width: clamp(300px, 50%, 800px)width: 50%; min-width: 300px; max-width: 800px와 수학적으로 동치입니다. 그러나 구현 측면에서 차이가 있습니다. clamp()는 단일 속성의 계산 값으로 처리되는 반면, 개별 min/max 속성은 레이아웃 단계에서 별도의 제약으로 적용됩니다.

대체 요소의 특수한 크기 결정 CSS2.1 Section 10.3.2에서 정의하는 대체 요소(img, video 등)의 크기 결정은 더 복잡합니다. 고유 비율(intrinsic ratio)을 가진 대체 요소에 min/max 제약이 적용될 때, 명세는 6가지 경우를 분기하여 처리합니다. 예를 들어 max-width가 적용되어 너비가 줄어들면 고유 비율에 따라 높이도 조정되는데, 이 조정된 높이가 다시 min-height 제약에 걸릴 수 있습니다. 이 경우 명세의 “제약 위반(constraint violation)” 테이블에 따라 최종 크기가 결정됩니다.

반응형 크기 제약 패턴

입문

min과 max 속성을 조합하면 화면 크기가 바뀌어도 자동으로 적절한 크기를 유지하는 유연한 레이아웃을 만들 수 있어요.

📱 화면 크기가 바뀌면? 여러분이 고무줄을 잡고 양쪽으로 당긴다고 생각해보세요. 너무 많이 당기면 끊어지고, 놓으면 뭉쳐버리죠? min과 max를 함께 쓰면 고무줄이 적당한 범위에서만 늘어나고 줄어들 수 있게 해줘요. 너무 늘어나지도, 너무 줄어들지도 않아요.

🃏 카드 레이아웃이란? 쇼핑몰 사이트에서 상품 카드가 한 줄에 여러 개 나란히 있는 걸 본 적 있죠? 큰 화면에서는 4개, 중간 화면에서는 3개, 작은 화면에서는 2개로 자동 조절되는데, 이게 바로 min-width와 max-width를 활용한 반응형 카드 레이아웃이에요.

🎨 퍼센트와 픽셀을 같이 쓴다고요? “너비를 화면의 80%로 해줘, 근데 최소 320px, 최대 1200px이야”처럼 유연한 크기와 고정된 한계를 조합할 수 있어요. 화면이 작을 때는 320px 이하로 안 줄어들고, 클 때는 1200px 이상 안 늘어나면서, 중간에서는 80%로 자연스럽게 변해요.

💡 미디어 쿼리 없이도 되나요? 미디어 쿼리는 “화면이 이 크기일 때 이렇게 바꿔”라고 하나하나 지정하는 거예요. 하지만 min/max 속성을 잘 조합하면, 따로 지정하지 않아도 자동으로 적절하게 조절돼요. 더 간단하고 자연스러운 방법이죠!

중급

min/max 크기 속성을 유동 단위(%, vw)와 고정 단위(px, rem)를 조합하면, 미디어 쿼리 없이도 반응형 레이아웃의 핵심 패턴을 구현할 수 있습니다.

유동 + 고정 제약 패턴 가장 일반적인 패턴은 width에 퍼센트를, min/max에 고정값을 지정하는 것입니다. 이렇게 하면 요소가 뷰포트에 비례하여 늘거나 줄되, 합리적인 범위를 벗어나지 않습니다.

/* 유동 + 고정 제약 패턴 */
.container {
  width: 90%;
  min-width: 320px;  /* 모바일 최소 보장 */
  max-width: 1200px; /* 와이드 스크린 제한 */
  margin: 0 auto;
}

/* clamp() 함수로 동일하게 표현 */
.container-clamp {
  width: clamp(320px, 90%, 1200px);
  margin: 0 auto;
}

Flexbox/Grid와의 조합 Flex 아이템이나 Grid 트랙에 min/max 제약을 적용하면, 아이템이 자동으로 줄 바꿈되거나 크기가 조절되면서 반응형 그리드를 구현할 수 있습니다.

/* Grid + minmax()로 자동 반응형 카드 */
.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 16px;
}

/* Flex + min/max로 카드 크기 제약 */
.flex-card {
  flex: 1 1 300px;   /* 기본 300px, 유연하게 조절 */
  min-width: 250px;  /* 최소 보장 */
  max-width: 400px;  /* 최대 제한 */
}

유동 타이포그래피 패턴 clamp() 함수를 활용하면 뷰포트 너비에 따라 폰트 크기가 자연스럽게 변하면서도 극단적인 크기를 방지할 수 있습니다. 이 패턴은 min/max 크기 제약의 원리를 폰트 크기에 적용한 것입니다.

/* 뷰포트 기반 유동 타이포그래피 */
h1 {
  font-size: clamp(1.5rem, 4vw, 3rem);
  /* 최소 1.5rem, 최대 3rem, 중간은 뷰포트 4% */
}

심화

반응형 크기 제약 패턴은 CSS의 제약 기반 레이아웃(constraint-based layout) 철학을 구현하는 핵심 기법으로, 선언적 반응형 디자인(declarative responsive design)의 토대가 됩니다.

CSS Grid의 minmax() 함수와 내재적 크기 CSS Grid Level 1 명세에서 정의하는 minmax(min, max) 함수는 트랙 크기 결정에 특화된 제약 표현입니다. 이 함수는 min-width/max-width 속성과 유사하지만, 트랙 크기 결정 알고리즘(track sizing algorithm)의 맥락에서 동작합니다. repeat(auto-fill, minmax(250px, 1fr)) 패턴에서 브라우저는 먼저 가용 공간에 250px 트랙을 최대한 채운 뒤, 남은 공간을 1fr 비율로 분배합니다. 이 과정은 Grid 명세 Section 12.3의 “Resolve Intrinsic Track Sizes” → “Maximize Tracks” → “Expand Flexible Tracks” 3단계 알고리즘을 따릅니다.

clamp()의 계산 모델과 성능 특성 CSS Values Level 4에서 도입된 clamp(MIN, VAL, MAX)max(MIN, min(VAL, MAX))로 정의됩니다. 이 함수가 속성 값으로 사용될 때, 브라우저는 스타일 계산(style resolution) 단계에서 세 인수를 모두 계산하고 비교합니다. VAL이 뷰포트 단위(vw, vh)를 포함하면 뷰포트 리사이즈 시마다 재계산이 필요하지만, 최신 엔진(Blink 100+, Gecko 98+)은 “style dirty” 플래그를 통해 뷰포트 의존 속성만 선택적으로 재계산하므로 성능 영향은 최소화됩니다.

Container Queries와의 시너지 CSS Containment Module Level 3에서 도입된 컨테이너 쿼리(Container Queries)는 min/max 크기 제약과 결합하여 더 정교한 반응형 패턴을 가능하게 합니다. 컨테이너 쿼리의 container-type: inline-size는 요소에 크기 격리(size containment)를 적용하는데, 이는 해당 요소의 고유 크기 계산에서 자식 요소의 기여를 무시한다는 것을 의미합니다. 따라서 컨테이너 쿼리 대상에 min-height를 설정하여 콘텐츠 부재 시에도 최소 높이를 보장하는 것이 권장되는 패턴입니다.