๋ฐ˜์‘ํ˜•

TL;DR


  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์š”์†Œ๋“ค์€ DOM ์ˆœ์„œ์— ๋”ฐ๋ผ ์Œ“์ธ๋‹ค.
  • positioned(position ≠ static) ์š”์†Œ๋Š” non-positioned(position = static) ์š”์†Œ๋ณด๋‹ค ์œ„์— ์Œ“์ธ๋‹ค.
  • positioned ์š”์†Œ๋“ค ์ค‘ z-index ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ์œ„์— ์Œ“์ธ๋‹ค.
  • ์ƒˆ๋กœ์šด ์Œ“์ž„ ๋งฅ๋ฝ์ด ์ƒ์„ฑ๋˜๋ฉด ์ž์‹ ์š”์†Œ๋Š” ํ•ด๋‹น ๋งฅ๋ฝ ์•ˆ์—์„œ ์ˆœ์„œ๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

 

 

์„ค๋ช…


์Œ“์ž„ ๋งฅ๋ฝ(Stacking Context)์€ HTML ์š”์†Œ๋“ค์„ ๊ฐ€์ƒ์˜ z์ถ•(๊นŠ์ด) ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์š”์†Œ๋“ค์€ DOM ์ˆœ์„œ์— ๋”ฐ๋ผ ์Œ“์ธ๋‹ค. ์ฆ‰, ๋’ค์— ์ •์˜ํ•œ ์š”์†Œ์ผ์ˆ˜๋ก ํ™”๋ฉด์—์„  ์œ„์— ์œ„์น˜ํ•œ๋‹ค.

 

position์„ ์ ์šฉํ•œ ์š”์†Œ(positioned)๋Š” position์„ ์ ์šฉํ•˜์ง€ ์•Š์€ ์š”์†Œ(non-positioned)๋ณด๋‹ค ์œ„์— ์Œ“์ธ๋‹ค. positioned ์š”์†Œ๋“ค ์ค‘์—์„  z-index ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ์œ„์— ์Œ“์ธ๋‹ค. ์ฐธ๊ณ ๋กœ z-index๋Š” positioned ์š”์†Œ์—์„œ๋งŒ ์ž‘๋™ํ•œ๋‹ค. 

 

  • positioned: position ์†์„ฑ์ด static ์ด์™ธ์˜ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์š”์†Œ
  • non-positioned: position ์†์„ฑ์ด static์ธ ์š”์†Œ
  • position ์†์„ฑ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’ static (non-positioned)
  • z-index ์†์„ฑ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’ auto

 

์•„๋ž˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๋Š” ์ƒˆ๋กœ์šด ์Œ“์ž„ ๋งฅ๋ฝ์„ ์ƒ์„ฑํ•œ๋‹ค. ๊ทธ๋Ÿผ ์ž์‹ ์š”์†Œ๋“ค์€ ํ•ด๋‹น ๋งฅ๋ฝ ๋‚ด์—์„œ๋งŒ ์Œ“์ž„ ์ˆœ์„œ๊ฐ€ ๊ฒฐ์ •๋ผ์„œ ๋ถ€๋ชจ์˜ ์Œ“์ž„ ๋งฅ๋ฝ์„ ๋ฒ—์–ด๋‚  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค. ๋•Œ๋ฌธ์— ์ž์‹ ์š”์†Œ์˜ z-index๊ฐ€ ๋ถ€๋ชจ ์š”์†Œ๋ณด๋‹ค ํฌ๋”๋ผ๋„ ๋ถ€๋ชจ ์š”์†Œ๊ฐ€ ๋‹ค๋ฅธ ์š”์†Œ๋“ค๋ณด๋‹ค ๋’ค์— ์žˆ๋‹ค๋ฉด ์ž์‹ ์š”์†Œ ์—ญ์‹œ ๋’ค์— ๋ฐฐ์น˜๋œ๋‹ค.

 

  1. position: fixed ํ˜น์€ position: sticky
  2. position: relative ํ˜น์€ position: absolute ์ด๋ฉด์„œ, z-index ์†์„ฑ์ด auto๊ฐ€ ์•„๋‹ ๋•Œ
  3. display: flex ํ˜น์€ display: grid ์ด๋ฉด์„œ, z-index ์†์„ฑ์ด auto๊ฐ€ ์•„๋‹ ๋•Œ
  4. opacity ๊ฐ’์ด 1 ๋ฏธ๋งŒ์ผ ๋•Œ
  5. transform, filter, backdrop-filter ๋“ฑ ์†์„ฑ์ด none์ด ์•„๋‹ ๋•Œ

 

 

์˜ˆ์‹œ


<div style="position: relative; z-index: 1">
  A ์š”์†Œ (z-index: 1)
  <div style="position: absolute; z-index: 999">
    A-1 ์š”์†Œ (z-index: 999)
  </div>
</div>

<div style="position: relative; z-index: 2">
  B ์š”์†Œ (z-index: 2)
</div>

 

 

  1. ์ตœ์ƒ์œ„ ์Œ“์ž„ ๋งฅ๋ฝ: B ์š”์†Œ z-index > A ์š”์†Œ z-index ์ด๋ฏ€๋กœ B ์š”์†Œ๊ฐ€ ์œ„์— ์Œ“์ž„
  2. A ์š”์†Œ ๋‚ด๋ถ€์˜ ์Œ“์ž„ ๋งฅ๋ฝ: A-1 ์š”์†Œ z-index > A ์š”์†Œ z-index ์ด๋ฏ€๋กœ A-1 ์š”์†Œ๊ฐ€ ์œ„์— ์Œ“์ž„
  3. ์ตœ์ข…์ ์œผ๋กœ (์•„๋ž˜์ชฝ) AA-1B (์œ„์ชฝ) ์ˆœ์„œ๋กœ ์Œ“์ž„

 

 

๋ ˆํผ๋Ÿฐ์Šค


 

์Œ“์ž„ ๋งฅ๋ฝ - CSS: Cascading Style Sheets | MDN

์Œ“์ž„ ๋งฅ๋ฝ(stacking context)์€ ๊ฐ€์ƒ์˜ Z์ถ•์„ ์‚ฌ์šฉํ•œ HTML ์š”์†Œ์˜ 3์ฐจ์› ๊ฐœ๋…ํ™”์ž…๋‹ˆ๋‹ค. Z์ถ•์€ ์‚ฌ์šฉ์ž ๊ธฐ์ค€์ด๋ฉฐ, ์‚ฌ์šฉ์ž๋Š” ๋ทฐํฌํŠธ ํ˜น์€ ์›นํŽ˜์ด์ง€๋ฅผ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ์„ ๊ฒƒ์œผ๋กœ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ HTML ์š”์†Œ๋Š”

developer.mozilla.org

 


๊ธ€ ์ˆ˜์ •์‚ฌํ•ญ์€ ๋…ธ์…˜ ํŽ˜์ด์ง€์— ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”
 
 
 
 
 
๋ฐ˜์‘ํ˜•