πŸ’‘ CSS 100vh vs 100% μ œλŒ€λ‘œ μ΄ν•΄ν•˜κ³  μ“°κΈ°

HMJΒ·2025λ…„ 5μ›” 30일

κ°œλ…μ •λ¦¬

λͺ©λ‘ 보기
3/8

CSSμ—μ„œ 높이λ₯Ό μ„€μ •ν•  λ•Œ κ°€μž₯ 자주 μ“°λŠ” λ‹¨μœ„μΈ 100vh와 100%.
λΉ„μŠ·ν•΄ λ³΄μ΄μ§€λ§Œ λ‘˜μ€ λ™μž‘ 방식이 μ™„μ „νžˆ λ‹€λ¦…λ‹ˆλ‹€.

이번 κΈ€μ—μ„œλŠ” 100vh와 100%의 차이,
예제 μ½”λ“œ, μ‹€μ œ λ™μž‘ 방식,
그리고 자주 ν•˜λŠ” μ‹€μˆ˜μ™€ ν•΄κ²°λ²•κΉŒμ§€ λͺ¨λ‘ μ •λ¦¬ν•΄λ³Όκ²Œμš”!


βœ… 1. 100vhλž€?

vhλŠ” Viewport Height의 μ•½μžλ‘œ, λΈŒλΌμš°μ € ν™”λ©΄ 높이 κΈ°μ€€μž…λ‹ˆλ‹€.

  • 100vh = λΈŒλΌμš°μ € ν™”λ©΄ 전체 높이
  • 50vh = λΈŒλΌμš°μ € ν™”λ©΄μ˜ 절반 높이
.section {
  height: 100vh;
}

πŸ“Œ μœ„ μ½”λ“œλŠ” .section μš”μ†Œλ₯Ό λΈŒλΌμš°μ € ν™”λ©΄ 전체 λ†’μ΄λ§ŒνΌ μ±„μ›λ‹ˆλ‹€.


βœ… 2. 100%λž€?

100%λŠ” λΆ€λͺ¨ μš”μ†Œμ˜ 높이λ₯Ό κΈ°μ€€μœΌλ‘œ λ™μž‘ν•©λ‹ˆλ‹€.

.parent {
  height: 500px;
}

.child {
  height: 100%;
}

πŸ“Œ 이 경우 .childλŠ” μ •ν™•νžˆ 500px 높이가 λ©λ‹ˆλ‹€.

❗ 주의: λΆ€λͺ¨ μš”μ†Œμ— heightκ°€ μ—†μœΌλ©΄, 100%λŠ” 아무 νš¨κ³Όκ°€ μ—†μŠ΅λ‹ˆλ‹€.


πŸ” 비ꡐ μš”μ•½

μ†μ„±κΈ°μ€€νŠΉμ§•
100vhλΈŒλΌμš°μ € 창항상 μ •ν™•ν•˜κ²Œ 적용됨
100%λΆ€λͺ¨ μš”μ†ŒλΆ€λͺ¨κ°€ heightλ₯Ό κ°€μ Έμ•Ό 적용 κ°€λŠ₯

πŸ§ͺ μ‹€μ „ 예제 비ꡐ

예제 HTML

<div class="wrapper">
  <div class="box"></div>
</div>

β‘  height: 100vh

.box {
  height: 100vh;
  background: skyblue;
}

🟒 κ²°κ³Ό: .boxλŠ” λΈŒλΌμš°μ € λ†’μ΄λ§ŒνΌ μ •ν™•ν•˜κ²Œ μ±„μ›Œμ§


β‘‘ height: 100% (λΆ€λͺ¨ 높이 μ—†μŒ)

.wrapper {
  background: lightgray;
}

.box {
  height: 100%;
  background: red;
}

πŸ”΄ κ²°κ³Ό: .wrapperκ°€ heightκ°€ μ—†κΈ° λ•Œλ¬Έμ—, .boxλŠ” 높이가 0 β†’ 보이지 μ•ŠμŒ


β‘’ height: 100% (λΆ€λͺ¨ 높이 있음)

.wrapper {
  height: 400px;
}

.box {
  height: 100%;
  background: red;
}

🟒 κ²°κ³Ό: .boxλŠ” 400px λ†’μ΄λ‘œ μ •ν™•νžˆ 적용됨


πŸ’‘ μΆ”κ°€ 팁: μœ„μΉ˜μ™€ λ†’μ΄λŠ” λ‹€λ₯΄λ‹€!

.box {
  height: 100vh;
  margin-top: 40px;
}

πŸ“Œ 이 μ½”λ“œλŠ” 높이 100vh인 λ°•μŠ€λ₯Ό μœ„μ—μ„œ 40px μ•„λž˜μ— μœ„μΉ˜μ‹œν‚΅λ‹ˆλ‹€.

즉, μ‹€μ œ μœ„μΉ˜λŠ” 40px ~ 840px이 되죠.
vhλŠ” 크기일 뿐, μ‹œμž‘ μœ„μΉ˜λ₯Ό μ˜λ―Έν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.


❌ 자주 ν•˜λŠ” μ‹€μˆ˜

/* ❌ 잘λͺ»λœ μ˜ˆμ‹œ */
height: 100vh - 1rem;
  • μ΄λ ‡κ²ŒλŠ” CSSκ°€ μΈμ‹ν•˜μ§€ λͺ»ν•΄ λ¬΄μ‹œλ©λ‹ˆλ‹€.

βœ… μ˜¬λ°”λ₯Έ 방법은 calc() μ‚¬μš©!

/* βœ… μ œλŒ€λ‘œ 된 μ˜ˆμ‹œ */
height: calc(100vh - 1rem);

🎯 μ–Έμ œ 뭘 써야 ν• κΉŒ?

μƒν™©μΆ”μ²œ 속성
ν™”λ©΄ 전체λ₯Ό μ±„μš°κ³  싢을 λ•Œ100vh
λΆ€λͺ¨ μš”μ†Œμ™€ 같은 λ†’μ΄λ‘œ λ§žμΆ”κ³  싢을 λ•Œ100% (단, λΆ€λͺ¨κ°€ heightλ₯Ό κ°€μ§ˆ λ•Œλ§Œ)
λ·°ν¬νŠΈμ—μ„œ νŠΉμ • μ˜μ—­λ§Œ μ œμ™Έν•˜κ³  싢을 λ•Œcalc(100vh - xxx)

βœ… 마무리 μš”μ•½

μ†μ„±κΈ°μ€€νŠΉμ§•
100vhλΈŒλΌμš°μ € ν™”λ©΄ 전체항상 μΌμ •ν•œ 높이 보μž₯
100%λΆ€λͺ¨ μš”μ†Œμ˜ 높이뢀λͺ¨κ°€ heightλ₯Ό μ„€μ •ν•΄μ•Ό 의미 있음

0개의 λŒ“κΈ€