Skip to content
This page has been auto-translated and may contain errors.View in English

크기 조정 및 단위

docs.scrimba.com

픽셀 단위로 글꼴 크기를 설정하고 페이지를 배포한 후, 편의를 위해 브라우저 텍스트를 더 크게 설정한 독자는 전혀 변화가 없다는 것을 봅니다. 카드에 고정 너비를 지정하면 휴대폰에서 넘칩니다. 둘 다 같은 질문으로 귀결됩니다. CSS에 숫자를 입력할 때 그 숫자는 무엇을 기준으로 측정되나요? 일부 단위는 고정되어 있고, 일부는 글꼴에 따라 확대되고, 일부는 부모를 기준으로 확대되고, 일부는 화면을 기준으로 확대됩니다. 어떤 것이 어떤 것인지 알면 추측을 멈추고 작업을 수행하는 단위를 선택하기 시작합니다.

절대 단위 대 상대 단위

CSS 단위는 두 가지 계열로 나뉩니다. **절대 단위**는 절대로 변하지 않는 고정된 크기입니다. px(픽셀)은 어디서나 만날 수 있는 단위입니다. 상대 단위는 독자의 글꼴 크기나 화면 너비와 같이 다른 것으로 확대되는 크기입니다.

방을 측정하는 것을 생각해 보세요. 센티미터는 절대적입니다. 벽은 키가 크든 작든 400cm입니다. "내 발걸음 3개"는 상대적입니다. 누가 걷고 있는지에 따라 달라집니다. 절대 단위는 정확한 제어를 제공합니다. 상대 단위는 페이지가 이를 보는 사람에게 맞게 조정되도록 합니다.

그 적응이 중요합니다. 일부 독자는 눈에 더 편하기 때문에 더 큰 기본 텍스트 크기를 설정합니다. 상대 단위로 텍스트 크기를 설정하면 해당 설정이 적용되고 페이지가 이에 맞게 커집니다. 픽셀로 잠그면 고정된 상태로 유지되고 무시합니다.

CSS의 모든 길이는 절대 또는 상대이며, 이 차이는 레이아웃이 적응할 수 있는지 여부를 결정합니다. **절대 단위**는 컨텍스트에 관계없이 고정된 크기로 확인됩니다. px는 실제로 사용할 유일한 절대 단위입니다. cm, pt 등은 인쇄를 목표로 합니다. 상대 단위는 참조를 기준으로 확인되며, 어느 참조인지는 단위에 따라 다릅니다. remem은 글꼴 크기로 확대되고, %는 부모로 확대되고, vwvh는 뷰포트로 확대됩니다.

대부분의 크기 조정에 상대 단위를 선호하는 이유는 접근성과 반응성입니다. 독자가 브라우저의 기본 글꼴 크기를 올리면 rem으로 크기가 조정된 모든 것이 함께 커지는 반면, px에 고정된 모든 것은 고정된 상태로 유지되고 주변 레이아웃을 손상시킬 수 있습니다. 화면 크기도 마찬가지입니다. 상대 단위를 사용하면 한 스타일시트가 휴대폰과 모니터에 적합하므로 반응형 디자인의 기초입니다.

선택하는 단위는 숫자가 고정되는 대상을 결정하는 것이며, 그 고정이 레이아웃이 독자에게 응답하는지 아니면 무시하는지를 결정합니다. **절대 단위**는 모든 컨텍스트에서 동일한 계산된 길이로 확인됩니다. 화면 CSS에서 실질적으로 px만 해당됩니다. 물리적 단위(cm, mm, in, pt, pc)는 어차피 픽셀을 기준으로 정의됩니다(1in은 정의상 96px이므로) 인쇄 스타일시트에 속합니다. 상대 단위는 변할 수 있는 참조를 기준으로 확인되며, 이것이 적응을 가능하게 합니다.

참조가 전부이므로 각 상대 단위가 가리키는 대상을 명명할 가치가 있습니다. remem글꼴 상대입니다. 글꼴 크기(루트의 또는 요소의)를 기준으로 확인됩니다. %는 대부분의 속성에서 부모 상대입니다. 백분율 너비는 포함 블록의 너비의 일부입니다. vwvh뷰포트 상대입니다. 브라우저 뷰포트(페이지의 보이는 영역)의 일부입니다. 실질적인 규칙은 다음과 같습니다. 유형 크기 조정 및 레이아웃을 상대 단위로 설정하고, px를 확대되지 않아야 하는 항목에 유지합니다. 더 큰 기본 글꼴 크기를 설정하거나 페이지를 확대하는 독자는 상대 단위가 가리키는 참조를 이동시키므로 페이지가 이들을 충족하도록 커집니다. px 값에는 이동할 참조가 없으므로 그대로 유지되며, 이것이 방지하려는 접근성 실패입니다.

Juno절대 단위 대 상대 단위px와 같은 절대 단위는 절대로 변하지 않는 고정된 크기입니다. 상대 단위는 독자의 글꼴 크기나 화면 너비와 같이 다른 것으로 확대됩니다. 상대 단위를 사용하면 페이지가 이를 보는 사람에게 맞게 조정되므로 더 큰 텍스트 크기를 설정하는 독자에게 중요합니다.
Juno절대 단위 대 상대 단위px는 실제로 사용할 유일한 절대 단위입니다. 다른 모든 것은 참조로 확대됩니다. remem은 글꼴로 확대되고, %는 부모로 확대되고, vwvh는 뷰포트로 확대됩니다. 독자가 기본 글꼴 크기를 올릴 때 페이지가 커지도록 상대 단위에 도달하세요. 무시하지 마세요.
Juno절대 단위 대 상대 단위 모든 단위는 숫자 더하기 앵커이며, 앵커는 레이아웃이 응답할 수 있는지 여부를 결정합니다. px에는 이동할 앵커가 없으므로 절대로 적응하지 않습니다. remem은 글꼴에 고정되고, %는 부모에 고정되고, vwvh는 뷰포트에 고정됩니다. 유형 크기 조정 및 레이아웃을 상대 단위로 설정하고 px를 고정된 상태로 유지해야 하는 부분에 유지합니다.

픽셀 및 미세한 조정

픽셀(px)은 길이의 작은 고정 단위입니다. 16px는 항상 16px이므로 추론하기 가장 직접적입니다. 이는 어떤 상황에서든 같은 크기로 유지되어야 하는 작은 것에 적합합니다. 테두리의 두께, 작은 둥근 모서리, 고정 아이콘입니다.

css
.card {
  border: 1px solid #ccc;      /* 헤어라인 테두리, 항상 1px */
  border-radius: 8px;          /* 고정된 둥근 모서리 */
}

문제는 픽셀이 독자를 고려하지 않는다는 것입니다. 누군가 브라우저를 더 큰 텍스트로 설정했다면, 24px로 잠긴 제목은 24px로 유지되고 그들의 선택을 무시합니다. 그래서 px는 테두리와 작은 세부 사항에는 좋지만 페이지의 단어에 원하는 단위는 아닙니다.

px는 길이가 고정되기를 원할 때 도달할 단위입니다. 테두리, 헤어라인 분할기, 작은 고정 반경, 시스템 축소되지 않아야 하는 아이콘입니다. 이러한 경우 고정성이 요점입니다. 1px 테두리가 독자의 글꼴 크기에 따라 커지면 잘못 보일 것이므로 고정하는 것이 맞습니다.

css
.card {
  border: 1px solid #ccc;      /* 글꼴 크기에 관계없이 헤어라인 유지 */
  border-radius: 8px;
  padding: 1rem;               /* 내부 간격은 유형과 함께 확대됨 */
}

단점은 텍스트 크기를 조정하지 않는 이유입니다. 독자는 브라우저에서 편안함이나 접근성을 위해 더 큰 기본 글꼴 크기를 설정할 수 있으며, px는 이를 무시합니다. font-size: 18px 제목은 기본값이 16이든 24이든 18픽셀로 렌더링됩니다. 따라서 고정 세부 사항에 px를 사용하고 독자의 설정을 존중해야 하는 항목으로 글꼴 상대 단위로 전환합니다. 다음 섹션에서 다룹니다.

CSS px는 물리적 장치 픽셀이 아닙니다. 이는 참조 픽셀이며, 브라우저가 1px를 화면 밀도 전체에서 일관된 겉보기 크기로 읽도록 확대하는 각도 단위입니다. 고밀도 디스플레이에서 하나의 CSS 픽셀은 여러 장치 픽셀에 매핑되므로 1px 테두리는 사라지지 않고 깔끔한 헤어라인으로 유지됩니다. 그 고정성으로 인해 px는 독자의 글꼴 크기를 추적하지 않아야 하는 항목에 적합합니다. 테두리, 1px 분할기, 작은 반경, box-shadow 오프셋, 헤어라인 상세입니다.

css
.card {
  border: 1px solid #ccc;      /* 고정 헤어라인; 확대하면 잘못 보임 */
  border-radius: 8px;
  padding: 1rem;               /* 내부 간격은 대신 유형을 추적함 */
}

실패 모드는 px로 텍스트 크기를 조정하는 것입니다. 픽셀에서 font-size를 설정하면 독자의 기본 글꼴 크기(브라우저 환경설정에서 설정할 수 있는 기본 크기, 종종 저시력)를 무시합니다. 이는 px 값에 그 환경설정을 기반으로 확대할 참조가 없기 때문입니다. 전체 페이지 확대와 구분하세요. 최신 브라우저는 전체 페이지 확대에서 px를 확대하므로 오래된 "px가 확대를 무시" 주장은 오래되었습니다. 그러나 px 글꼴 크기는 여전히 기본 글꼴 크기 설정을 구체적으로 무시하며, 그 설정은 많은 독자가 의존하는 접근성 경로입니다. 성립하는 규칙은 다음과 같습니다. px는 고정 세부 사항, 특히 본문 텍스트 및 타이포그래피에 대해 독자가 확대할 수 있어야 하는 항목을 위한 글꼴 상대 단위입니다.

Juno픽셀 및 미세한 조정 픽셀(px)은 고정된 크기이므로 16px는 항상 16px입니다. 이는 1px 테두리나 작은 둥근 모서리와 같이 그대로 유지되어야 하는 작은 것에 적합합니다. 거래는 px가 더 큰 텍스트를 설정한 독자를 무시한다는 것이므로 페이지의 단어를 원하는 단위가 아닙니다.
Juno픽셀 및 미세한 조정 길이가 확대되지 않아야 할 때 px를 사용하세요. 테두리, 헤어라인 분할기, 작은 반경. 그 고정성이 거기의 기능입니다. 단점은 텍스트에서 나타나며, 여기서 px 글꼴 크기는 독자의 더 큰 기본값을 무시하므로 px를 고정 세부 사항에 유지하고 글꼴 상대 단위로 텍스트 크기를 조정합니다.
Juno픽셀 및 미세한 조정 CSS px는 브라우저가 화면 밀도 전체에서 시각적으로 일관성 있게 유지하는 참조 픽셀이므로 1px 테두리는 깔끔한 헤어라인으로 유지됩니다. 이는 테두리 및 그림자와 같은 고정 세부 사항에 적합합니다. 텍스트에는 잘못되었습니다. px 글꼴 크기는 독자의 기본 글꼴 크기 설정을 무시하므로 대신 rem으로 유형을 크기 조정하세요.

em 및 rem

글꼴 크기로 확대되는 두 가지 상대 단위가 있습니다. emrem. 도달할 단위는 **rem**입니다. 이는 페이지의 루트 글꼴 크기, 즉 전체 문서에 설정된 기본 텍스트 크기(기본적으로 16px)를 기준으로 측정합니다. 따라서 1rem16px, 1.5rem24px, 2rem32px입니다.

css
h1 {
  font-size: 2rem;             /* 2 x 16px = 32px */
}
p {
  font-size: 1rem;             /* 16px, 기본 크기 */
  margin-bottom: 1.5rem;       /* 아래 24px 공간 */
}

rem은 그 하나의 루트 크기에 연결되어 있으므로 예측 가능합니다. 1.5rem은 페이지의 어디서나 같은 것을 의미합니다. 그리고 독자가 기본 텍스트 크기를 올리면 rem으로 크기가 조정된 모든 것이 함께 커집니다. 다른 단위인 em은 대신 요소 자신의 글꼴 크기로 확대되므로 얽힐 수 있습니다. rem으로 시작하면 거의 걸리지 않을 것입니다.

emrem은 모두 글꼴 상대이며, 차이점은 어느 글꼴 크기를 기준으로 측정하는가입니다. **rem**은 루트 글꼴 크기, <html> 요소에 설정된 크기(기본적으로 16px)를 기준으로 상대입니다. 따라서 1.5rem은 페이지의 어디서나 동일한 길이로 확인됩니다. em요소 자신의 글꼴 크기를 기준으로 상대이므로 사용하는 위치에 따라 값이 변합니다.

css
h1 {
  font-size: 2rem;             /* 항상 루트의 2배 = 32px */
}
.card {
  font-size: 1.125rem;         /* 18px */
  padding: 1em;                /* 이 요소의 1 x 18px = 18px */
}

권장 사항은 rem으로 크기 조정하고 em을 로컬 글꼴 크기에 연결된 확대를 위해서만 사용합니다. em은 단추의 글꼴 크기에 따라 커지는 단추 내 패딩과 같이 자신의 텍스트를 추적해야 하는 항목에 잘 작동합니다. 그러나 em은 중첩된 요소를 통해 구성되므로 사람들을 놀라게 하므로 이러한 로컬 경우를 유지하고 rem으로 일반적인 크기 조정 및 타이포그래피를 진행하세요.

emrem은 모두 글꼴 상대이며, 고정 길이가 아닌 글꼴 크기를 기준으로 확인되며, 구분은 참조입니다. rem(루트 em)은 루트 글꼴 크기, <html> 요소에 계산된 font-size를 기준으로 확인되므로 단일 전역 참조입니다. 1.25rem은 제목, 바닥글 또는 6단계 깊은 계산된 길이와 같습니다. em현재 요소의 font-size를 기준으로 확인되므로 의미가 로컬이고 컨텍스트에 따라 이동합니다.

그 로컬 참조는 em이 구성하는 곳입니다. 자식의 em이 자신의 font-size를 기준으로 측정되고, font-size 자체가 상속되므로, 중첩된 요소에 em으로 font-size를 설정하면 각 수준에서 곱해집니다.

css
/* 각 목록 레벨은 em에서 font-size를 설정하므로 크기가 곱셈적으로 쌓임 */
ul { font-size: 0.9em; }       /* 부모의 0.9배 */

/* 16px 루트는 다음이 됩니다.
   깊이 1 -> 14.4px
   깊이 2 -> 12.96px  (0.9 x 0.9)
   깊이 3 -> 11.66px  (0.9 x 0.9 x 0.9)  */

아무도 텍스트가 더 깊게 중첩될수록 축소되기를 요청하지 않았습니다. 그것은 em 구성이며 기본적으로 rem에 도달하는 주요 주장입니다. 거래는 반대로 실행됩니다. 구성 요소 로컬 확대의 경우, 한 요소의 자신의 유형을 추적하도록 값이 원합니다. font-size를 범프할 때 단추의 패딩이 0.75em이고 테두리 반경 0.5em는 단위로 재확대되며, rem은 이를 할 수 없습니다. 로컬 크기를 무시하기 때문입니다. 따라서 작업 분할은 루트에 대해 안정적으로 유지되어야 하는 항목에 rem, 자신의 요소의 글꼴 크기를 따라 확대되어야 하는 간격 및 반경에 em입니다.

유동형 크기 조정의 경우 min(), max(), clamp()를 사용하면 길이가 경계 사이를 유연하게 할 수 있습니다. min(a, b)는 현재 뷰포트에서 어느 것이 더 작은지 선택하고, max(a, b)는 더 크며, clamp(min, preferred, max)는 선호하는 값을 바닥과 상한 사이에서 유지합니다. 제목의 일반적인 패턴은 font-size: clamp(1.75rem, 4vw, 3rem)입니다. 뷰포트로 확대(4vw)되지만 1.75rem 아래로 떨어지거나 3rem을 초과하지 않으므로 유형이 중단점 스택 없이 유동형으로 유지됩니다. rem(또는 rem 바운드 clamp())에서 유형을 크기 조정하면 사용자 확대 및 독자의 기본 글꼴 크기도 존중합니다. 이는 이들이 rem이 확인하는 루트를 조정하기 때문이며, 반면 원시 vw 값은 뷰포트만 추적하고 독자의 글꼴 환경설정을 무시합니다. 그 이유로 clamp()rem 바닥과 상한이 중요합니다. 그들은 식에 접근 가능한 참조를 유지합니다.

Junoem 및 remremem은 모두 글꼴 크기로 확대되며, 시작할 하나는 rem입니다. 페이지의 루트 크기를 측정합니다. 기본적으로 16px이므로 1.5rem24px이고 어디서나 같은 의미입니다. em은 대신 요소의 자신의 글꼴 크기로 확대되므로 얽힐 수 있습니다. rem을 먼저 도달하세요.
Junoem 및 rem 둘 다 글꼴 상대입니다. rem은 루트 글꼴 크기를 기준으로 측정하므로 어디서나 안정적이며, em은 요소의 자신의 글꼴 크기를 기준으로 측정하므로 컨텍스트에 따라 변하고 중첩될 때 구성합니다. 기본적으로 rem으로 크기 조정하고 em을 단추 내 패딩과 같이 자신의 요소의 유형을 추적해야 하는 간격에 유지합니다.
Junoem 및 remrem은 한 가지 안정적인 참조를 위해 루트 글꼴 크기에 고정됩니다. em은 요소의 자신의 크기에 고정되고 중첩을 통해 곱해지므로 깊게 중첩된 em 글꼴 크기가 표류합니다. 일반적인 크기 조정에 rem을 사용하고 자신의 유형을 따라야 하는 구성 요소 로컬 확대에 em을 사용합니다. 유동형 유형의 경우 clamp(1.75rem, 4vw, 3rem)은 뷰포트와 함께 유연하게 하면서 rem 바닥과 상한은 사용자 확대 및 글꼴 설정을 존중하도록 유지합니다.

백분율

백분율(%)은 부모를 기준으로 요소의 크기를 조정합니다. 너비의 경우, width: 50%는 요소가 있는 상자 너비의 절반을 의미합니다.

css
.sidebar {
  width: 25%;                  /* 부모 너비의 1/4 */
}
.content {
  width: 75%;                  /* 남은 3/4 */
}

이것은 레이아웃을 유동형으로 만드는 것입니다. 너비가 부모의 분수이므로 부모가 변함에 따라 축소되고 커집니다. 창을 크기 조정하면 50% 열은 너비의 절반으로 유지되는 대신 고정 500px 열이 가장자리를 넘칩니다. 그 유연성이 반응형 디자인에서 백분율이 자주 나타나는 이유입니다.

**백분율**은 부모의 참조에 대해 확인되며, width의 경우 그 참조는 부모의 콘텐츠 너비입니다. 따라서 width: 50%는 포함 상자가 현재 무엇이든 절반을 제공하며, 이것은 백분율 기반 열을 유동형으로 만드는 것입니다. 부모가 크기를 조정할 때 추적합니다.

css
.container {
  width: 90%;                  /* 부모의 90%, 아래 상한까지 */
  max-width: 60rem;            /* 넓은 화면에서 60rem을 초과하여 성장 중단 */
  margin: 0 auto;              /* 중심 */
}

참조가 항상 너비는 아니며, 사람들을 혼동시킵니다. 백분율 padding 또는 margin, 수직 값도 부모의 너비에 대해 확인되며 높이에 대해 아닙니다. 백분율 height는 부모의 높이에 대해 확인되지만, 부모가 측정할 확실한 높이를 가지고 있는 경우에만 그렇지 않으면 확인할 것이 없으므로 무시됩니다. 백분율 너비를 remmax-width와 쌍을 이루는 것이 일반적인 이동입니다. 유동형에서 지점까지이며, 선을 읽기 위해 너무 넓게 늘어나지 않도록 제한됩니다.

**백분율은 상대적이지만 remem과 다르게 참조가 글꼴 크기가 아니라 포함 블록의 차원입니다. 포함 블록은 위치 지정되거나 흐름 내 요소에 대한 참조를 설정하는 상자이며 보통 부모의 콘텐츠 상자입니다. 물린 문제는 참조 차원이 속성별이며 항상 예상한 대로입니다.

css
.hero {
  width: 80%;                  /* 포함 블록의 WIDTH의 80% */
  padding-top: 25%;            /* 높이가 아닌 WIDTH의 25% */
  margin-bottom: 10%;          /* WIDTH 다시, 수직일지라도 */
}

width, padding, margin 백분율은 모두 포함 블록의 너비에 대해 확인되며, 수직 패딩과 여백을 포함합니다. 그 너비 기반 수직 패딩은 막을 경로가 아닙니다. 이는 aspect-ratio가 배포되기 전 고정 종횡비 상자를 위한 고전적인 트릭입니다. padding-top: 56.25%는 너비로 확대되는 16:9 영역을 제공합니다. height 백분율은 포함 블록의 높이에 대해 확인되지만, 그 높이가 확실할 경우에만(명시적으로 설정되거나 그렇지 않으면 확인 가능). 자동 높이에 대해 auto로 계산되고 아무것도 하지 않는 것처럼 보이며, 이것이 백분율 높이가 자동으로 실패하는 일반적인 이유입니다. 최신 레이아웃에서 flex-basis 및 그리드 추적 백분율은 더 예측 가능하게 동작하므로 백분율은 유동형 너비로 유용하게 유지되며 fr 단위 및 min()/max()/clamp()은 백분율이 어색하게 처리하는 경우를 다룹니다.

Juno백분율 백분율은 부모를 기준으로 크기를 조정하므로 width: 50%는 요소가 있는 상자 너비의 절반입니다. 이는 열을 유동형으로 만듭니다. 창을 크기 조정하면 넘치지 않고 커지고 축소됩니다. 이것은 어떤 화면에도 맞는 레이아웃 뒤의 주요 도구 중 하나입니다.
Juno백분율 백분율 너비는 부모의 분수이며, 이는 컨테이너 크기를 조정할 때 열을 유동형으로 유지합니다. 참조를 조심하세요. 백분율 패딩과 여백은 부모의 너비에 대해 확인되며, 수직 값까지이고, 백분율 높이는 부모가 확실한 높이를 가져야 합니다. 백분율 너비를 rem에서 max-width와 쌍을 이루면 유동형으로 유지되지만 제한됩니다.
Juno백분율 백분율은 포함 블록에 대해 확인되며, 참조는 속성별입니다. width, padding, margin은 모두 너비를 사용하며, 수직 값 포함. 너비 기반 수직 패딩은 너비로 확대되는 종횡비 상자 뒤의 트릭입니다. 백분율 높이는 확실한 부모 높이가 필요하거나 auto로 계산되고 아무것도 하지 않습니다. 유동형 너비를 위해 백분율을 유지하고 fr 단위 및 clamp()는 어색한 경우를 처리합니다.

뷰포트 단위

뷰포트 단위는 브라우저 창 자체를 기준으로 크기를 조정합니다. **vw**는 뷰포트 너비의 백분율이고 vh는 뷰포트 높이의 백분율입니다. 뷰포트는 페이지의 보이는 영역입니다. 따라서 100vw는 창의 전체 너비이고 100vh는 전체 높이입니다.

css
.hero {
  height: 100vh;               /* 전체 화면 높이를 채움 */
}

이는 전체 화면 섹션의 경우입니다. 어떤 크기이든 창을 채워야 하는 랜딩 배너와 같습니다. 단위가 창을 추적하므로 누군가 장치 크기를 조정하거나 회전할 때 한 화면에만 맞는 고정 픽셀 높이를 설정하지 않고 섹션은 전체 화면으로 유지됩니다.

뷰포트 단위는 뷰포트, 브라우저 창의 보이는 영역을 기준으로 측정합니다. **vw**는 뷰포트 너비의 1%이고 vh는 높이의 1%이므로 100vh는 전체 창 높이이고 50vw는 너비의 절반입니다. 어떤 크기이든 창을 채워야 하는 전체 화면 섹션 및 영웅 배너에 자연스러운 일치입니다.

css
.hero {
  min-height: 100vh;           /* 최소한 전체 화면 높음 */
  padding: 2rem;
}

휴대폰에서 알아야 할 한 가지는 100vh가 역사적으로 브라우저의 주소 표시줄 뒤의 공간을 포함했으므로 전체 높이 섹션이 보이는 영역보다 크고 아래에서 자를 수 있다는 것입니다. 수정은 dvh, 동적 뷰포트 높이는 브라우저 크롬이 표시되고 숨길 때 실제 보이는 높이를 추적합니다. 휴대폰 전체 화면 섹션에서 min-height: 100dvh에 도달하고, 글꼴 크기에서 원시 vw는 독자의 글꼴 설정을 무시하므로 레이아웃이 아닌 유형에 뷰포트 단위를 유지한다는 점을 유의합니다.

뷰포트 단위는 뷰포트(브라우저 창의 보이는 렌더링 영역)를 기준으로 확인됩니다. **vw**와 vh는 너비와 높이의 1%입니다. vminvmax는 두 개 중 더 작고 더 큼의 1%이며, 방향에 응응해야 하는 값에 편리합니다. 참조는 창이며, 부모가 아니므로, 주변 레이아웃과 무관한 전체 뷰포트 섹션을 위한 올바른 도구입니다.

css
.hero {
  min-height: 100dvh;          /* 전체 보이는 높이, 휴대폰 안전 */
  padding: 2rem;
}

날카로운 모서리는 휴대폰이며, 뷰포트 높이는 숫자가 아닙니다. 브라우저의 주소 표시줄 및 도구 모음은 사용자가 스크롤할 때 확장되고 축소되므로 100vh가능한 최대 뷰포트에 고정되었으며 전체 높이 섹션이 크롬 뒤로 넘칠 것입니다. CSS는 이제 세 개를 노출합니다. svh(작은 뷰포트 높이, 크롬 확장), lvh(큼, 크롬 축소), dvh(동적, 현재 상태를 살아있게 따릅니다). 보이는 영역에 맞아야 하는 전체 화면 섹션에 dvh를 사용하면서 막대가 이동할 때 리플로우됨을 수락합니다. 다른 함정은 원시 vwfont-size입니다. 뷰포트 단위의 참조가 창이고 루트 글꼴 크기가 아니므로, font-size: 4vw는 뷰포트를 변경하지 않는 독자의 기본 글꼴 크기와 페이지 확대를 모두 무시합니다. px 글꼴 크기와 동일한 접근성 테스트에 실패합니다. 수정은 바운드하는 것입니다. clamp(1rem, 4vw + 0.5rem, 2rem)은 유동형 동작을 유지하면서 rem 항이 독자의 설정이 이동할 수 있는 참조를 복원합니다.

Juno뷰포트 단위vwvh는 브라우저 창을 기준으로 크기를 조정합니다. 100vw는 전체 너비이고 100vh는 전체 높이입니다. 창의 크기를 조정할 때 한 픽셀 높이로 잠금 대신 전체 화면으로 유지되는 랜딩 배너와 같은 전체 화면 섹션의 경우입니다.
Juno뷰포트 단위vwvh는 창의 너비와 높이의 1%이며, 어떤 크기이든 화면을 채워야 하는 영웅 섹션에 적합합니다. 휴대폰에서 100vh는 주소 표시줄 뒤의 보이는 영역보다 클 수 있으므로 거기서 dvh에 도달하세요. 원시 vw 유형이 독자의 설정을 무시하므로 레이아웃이 아닌 글꼴 크기에 뷰포트 단위를 유지합니다.
Juno뷰포트 단위 뷰포트 단위는 창에 고정되며 부모가 아니므로 전체 뷰포트 섹션에 적합합니다. vminvmax는 방향에 응답합니다. 휴대폰에서 높이는 숫자가 아니므로 브라우저 크롬이 이동할 때 보이는 영역을 따르려면 dvh를 사용하세요. 원시 vw로 유형을 크기 조정하지 마세요. 독자의 글꼴 설정을 무시합니다. 접근 가능한 참조가 식에 남아 있도록 rem 항이 있는 clamp()에서 바운드하세요.