z-index ๋ ์ด์ด ์์คํ ์ด๋?
์น UI์์ ์ฌ๋ฌ ์ปดํฌ๋ํธ๊ฐ ๊ฒน์น ๋ ์ด๋ ์์๊ฐ ์์ ํ์๋ ์ง๋ z-index ๊ฐ์ด ๊ฒฐ์ ํฉ๋๋ค. ๊ฐ์ด ํด์๋ก ์์ ๋ ๋๋ง๋๋ฉฐ, ๊ฐ์ stacking context ๋ด์์๋ง ๋น๊ต๋ฉ๋๋ค.
z-index๋ฅผ ์์๋ก ์ฐ๋ฉด z-index: 9999, 99999 ๊ฐ์ ๋ฌด๋ถ๋ณํ ๊ฐ์ด ์ฝ๋๋ฒ ์ด์ค์ ํผ์ง๊ณ , ๋ ์ด์ด ์ถฉ๋ ๋ฒ๊ทธ๊ฐ ์ฆ์์ง๋๋ค. ์ฒ์๋ถํฐ ์ฒด๊ณ์ ์ธ ์ค์ผ์ผ(0ยท100ยท200ยทโฆ)์ ์ ํด ๋๋ฉด ํ ์ ์ฒด๊ฐ ์ผ๊ด์ฑ ์๊ฒ ์ธ ์ ์์ต๋๋ค.
์ค๊ณ ์์น
100 ๋จ์ ๊ตฌ๊ฐ์ ์ฌ์ฉํ๋ฉด ๋์ค์ ์ค๊ฐ ๋ ์ด์ด๋ฅผ ์ฝ์ ํ ์ฌ์ ๊ฐ ์๊น๋๋ค. Overlay(400)์ Modal(500)์ ๋ฐ๋์ ๋ถ๋ฆฌํด์ผ ๋ค ์ฒ๋ฆฌ๊ฐ ๋ชจ๋ฌ ์๋์ ์์นํ ์ ์์ต๋๋ค. Toast(800)๋ Modal(500)๋ณด๋ค ๋์์ผ ๋ชจ๋ฌ์ด ์ด๋ ธ์ ๋๋ ์๋ฆผ์ด ๋ณด์ ๋๋ค.
stacking context ์ฃผ์์ฌํญ
transform, opacity < 1, filter, will-change ์์ฑ์ ์ ์ฉํ ์์๋ ์๋ก์ด stacking context๋ฅผ ์์ฑํฉ๋๋ค. ์์ ์์์ z-index๊ฐ ์๋ฌด๋ฆฌ ๋์๋ ๋ถ๋ชจ์ stacking context๋ฅผ ๋ฒ์ด๋ ์ ์์ผ๋ฏ๋ก, ๋ชจ๋ฌยท์ค๋ฒ๋ ์ด๋ ๊ฐ๋ฅํ๋ฉด <body> ์งํ์(React Portal ๋ฑ)์ ๋ ๋๋งํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
ํ ์คํธ(์๋ฆผ)๊ฐ ๋ ๋์์ผ ํฉ๋๋ค. ๋ชจ๋ฌ์ด ์ด๋ฆฐ ์ํ์์๋ ์๋ฆผ์ ์์ ๋ณด์ฌ์ผ ํ๋ฏ๋ก ํ ์คํธ(800)๋ฅผ ๋ชจ๋ฌ(500)๋ณด๋ค ๋๊ฒ ์ค์ ํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์๋ํ์ง ์์ต๋๋ค. position: static์ธ ์์์๋ z-index๊ฐ ๋ฌด์๋ฉ๋๋ค. ๋จ, FlexboxยทGrid์ ์ง์ ์์ ์์๋ position ์์ด๋ z-index๊ฐ ์ ์ฉ๋ฉ๋๋ค.
๊ธฐ๋ฅ์ ์ผ๋ก๋ ๋์ํ์ง๋ง ์ ์ง๋ณด์๊ฐ ์ด๋ ต์ต๋๋ค. ์ฒด๊ณ ์์ด ํฐ ๊ฐ์ ์ฐ๋ฉด ๋๊ตฐ๊ฐ ๋ ํฐ ๊ฐ์ ์ถ๊ฐํ๋ ์ ์ํ์ด ์๊น๋๋ค. 100 ๋จ์ ์ค์ผ์ผ๋ก ๋ฏธ๋ฆฌ ์ค๊ณํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.