ìì ë§¥ë½
ìì ë§¥ë½(stacking context)ì ê°ìì Zì¶ì ì¬ì©í HTML ììì 3ì°¨ì ê°ë íì ëë¤. Zì¶ì ì¬ì©ì 기ì¤ì´ë©°, ì¬ì©ìë ë·°í¬í¸ í¹ì ì¹íì´ì§ë¥¼ ë°ë¼ë³´ê³ ìì ê²ì¼ë¡ ê°ì í©ëë¤. ê°ê°ì HTML ììë ìì ì ìì±ì ë°ë¥¸ ì°ì ìì를 ì¬ì©í´ 3ì°¨ì ê³µê°ì ì°¨ì§í©ëë¤.
ì¤ëª
ì´ì ê¸ z-index ì¬ì©í기ìì ë³´ìë¯, í¹ì ììì ë ëë§ ììë ìì ì z-index ìì± ê°ì ìí¥ì ë°ìµëë¤. ì´ë ê·¸ ììë¤ì´ ê°ì§ í¹ë³í ìì±ì¼ë¡ ì¸í´ ìì ë§¥ë½ì´ ìì±ë기 ë문ì
ëë¤.
ìì ë§¥ë½ì, 문ì ì´ëììë, ë¤ì ì¡°ê±´ì ë§ì¡±íë ììê° ìì±í©ëë¤.
-
문ìì ë£¨í¸ ìì. (
<html>) -
positionì´absoluteëërelativeì´ê³ ,z-indexê°autoê° ìë ìì. -
positionì´fixedëëstickyì¸ ìì. (stickyë 모ë 모ë°ì¼ ë¸ë¼ì°ì ììë í´ë¹íì§ë§ 구í ë°ì¤í¬í± ë¸ë¼ì°ì ììë í´ë¹íì§ ìì) -
container queries를 ìí
container-typeì´sizeëëinline-sizeì¸ ìì. -
íë ì¤(
flexbox) 컨í ì´ëì ìì ì¤z-indexê°autoê° ìë ìì. -
그리ë(
grid) 컨í ì´ëì ìì ì¤z-indexê°autoê° ìë ìì. -
opacityê° 1ë³´ë¤ ìì ìì. (ë¶í¬ëª ë ëª ì¸ ì°¸ê³ ) -
mix-blend-modeê°normalì´ ìë ìì. -
ë¤ì ìì± ì¤ íëë¼ë
noneì´ ìë ê°ì ê°ì§ ìì. -
isolationì´isolateì¸ ìì. -
will-changeì ê°ì¼ë¡, ì´ê¹ê°ì´ ìë ë ìë¡ì´ ìì ë§¥ë½ì ìì±íë ìì±ì ì§ì í ìì. -
containì´layout,paint, ëë ë ì¤ íë를 í¬í¨íë ê°(strict,contentë±)ì¸ ìì. -
top layerì ë°°ì¹ë ììì ì´ì ììíë
::backdrop. fullscreen ë° popover ììë¤ì ìë¡ ë¤ ì ììµëë¤.
ìì ë§¥ë½ ìì ìì ììë ì´ì ì ì¤ëª
íë ê·ì¹ì ëì¼íê² ì¬ì©í´ ìì
ëë¤. ì¤ìí ê²ì, ììì z-index ê°ì ë¶ëª¨ìê²ë§ ìë¯¸ê° ìë¤ë ì ì
ëë¤. íëì ìì ë§¥ë½ì ë¶ëª¨ ìì ë§¥ë½ ììì íµì§¸ë¡ íëì ë¨ìë¡ ê°ì£¼ë©ëë¤.
ìì½íë©´,
- ìì ë§¥ë½ì´ ë¤ë¥¸ ìì ë§¥ë½ì í¬í¨í ì ìê³ , í¨ê» ê³ì¸µ 구조를 ì´ë£¹ëë¤.
- ìì ë§¥ë½ì íì ìì ë§¥ë½ê³¼ ìì í ë¶ë¦¬ë©ëë¤. ììì ì²ë¦¬í ë ìì ììë§ ê³ ë ¤í©ëë¤.
- ê°ê°ì ìì ë§¥ë½ì ë 립ì ì ëë¤. ì´ë ììì ì½í ì¸ ë¥¼ ìì íìë ê·¸ ìì를 íµì§¸ ë¶ëª¨ ìì ë§¥ë½ ìì ë°°ì¹í©ëë¤.
ì°¸ê³ : 모ë ììê° ìì ë§¥ë½ì ìì±íë ê±´ ìëë¯ë¡, ìì ë§¥ë½ì ê³ì¸µ 구조ë HTML ìì ê³ì¸µ 구조ì ë¶ë¶ì§í©ì ëë¤. ìì ì ìì ë§¥ë½ì ë§ë¤ì§ ìì ììë 'ë¶ëª¨ ìì ë§¥ë½ì ìí´ ëíëë¤'ë¼ê³ ííí ì ìê² ìµëë¤.
ìì

ìì ìììì, 모ë ììë ê°ìì í¬ì§ì
ê³¼ z-indexë¡ ì¸í´ ìì ì ìì ë§¥ë½ì íì±í©ëë¤. ìì ë§¥ë½ì ê³ì¸µ 구조ë ë¤ìê³¼ ê°ìµëë¤.
- 루í¸
- DIV #1
- DIV #2
- DIV #3
- DIV #4
- DIV #5
- DIV #6
DIV #4, DIV #5, DIV #6ì DIV #3ì ììì´ë¯ë¡, DIV #3 ë´ë¶ììë§ ì ì ììì ì²ë¦¬íë¤ë ê²ì ì´í´íë ê² ì¤ìí©ëë¤. DIV #3 ë´ë¶ì ììì ì기ì ë ëë§ì´ ëë íìë, ì ì²´ DIV #3ì ë£¨í¸ ììì ìì ë§¥ë½ ìëìì íì DIVì ììµëë¤.
DIV #4ë DIV #1ë³´ë¤ z-index ìì±ê°ì´ ë í¬ì§ë§, DIV #1ë³´ë¤ ìëì ë ëë§ ëììµëë¤. ìëíë©´ DIV #1ì z-index ìì±ê°ì¸ 5ë ë£¨í¸ ììì ìì ë§¥ë½ ììì ì í¨íë DIV #4ì z-index ìì±ê°ì¸ 6ì DIV #3ì ìì ë§¥ë½ ìììë§ ì í¨í기 ë문ì ëë¤. ê·¸ë¬ë¯ë¡, DIV #4ë ë ë®ì z-index ìì±ê°ì ê°ë DIV #3ì ìíê² ëì´ DIV #1 ìëì ìì¹í©ëë¤.
ê°ì ì´ì ë¡ DIV #2 (z-index: 2)ë DIV #5 (z-index: 1) ìëì ë ëë§ ëììµëë¤. DIV #5ê° ê·¸ë³´ë¤ ë í° z-index ìì±ê°ì ê°ë DIV #3ì ìí´ì기 ë문ì
ëë¤.
DIV #3ì z-index ìì±ê°ì¸ 4ë DIV #4, DIV #5, DIV #6ì z-index ìì±ê°ê³¼ ë 립ì ì ëë¤. ìëíë©´ ë¤ë¥¸ ìì ë§¥ë½ì ìí´ì기 ë문ì ëë¤.
Zì¶ ìì ìì¸ ììë¤ì ë ëë§ ìì를 ì´í´íë ì¬ì´ ë°©ë²ì z-index를 "ë²ì ë²í¸" ì²ë¼ ìê°íë ê²ì ëë¤. ìì ììë ë¶ëª¨ ììì ë©ì´ì ë²ì ë²í¸ ìë ë§ì´ë ë²ì ë²í¸ë¥¼ ê°ìµëë¤. ì´ ë°©ë²ì ì z-indexê° 1ì¸ DIV #5ê° z-indexê° 2ì¸ DIV #2ìì ììëì§, z-indexê° 6ì¸ DIV #4ê° z-indexê° 5ì¸ DIV #1 ìëì ììëì§ ì´í´í기 ì½ëë¡ ë§ë¤ì´ì¤ëë¤.
ì°ë¦¬ ìì ë ë¤ìê³¼ ê°ìµëë¤. (ìµì¢ ë ëë§ ììì ë°ë¼ ì ë ¬ë¨)
- 루í¸
- DIV #2: (
z-index: 2) - DIV #3: (
z-index: 4)- DIV #5: (
z-index: 1), (z-index: 4)ì¸ ìì ìëìì ììì¼ë¯ë¡ ë ëë§ ììë 4.1ì ëë¤. - DIV #6: (
z-index: 3), (z-index: 4)ì¸ ìì ìëìì ììì¼ë¯ë¡ ë ëë§ ììë 4.3ì ëë¤. - DIV #4: (
z-index: 6), (z-index: 4)ì¸ ìì ìëìì ììì¼ë¯ë¡ ë ëë§ ììë 4.6ì ëë¤.
- DIV #5: (
- DIV #1: (
z-index: 5)
- DIV #2: (
HTML
<div id="div1">
<h1>Division Element #1</h1>
<code
>position: relative;<br />
z-index: 5;</code
>
</div>
<div id="div2">
<h1>Division Element #2</h1>
<code
>position: relative;<br />
z-index: 2;</code
>
</div>
<div id="div3">
<div id="div4">
<h1>Division Element #4</h1>
<code
>position: relative;<br />
z-index: 6;</code
>
</div>
<h1>Division Element #3</h1>
<code
>position: absolute;<br />
z-index: 4;</code
>
<div id="div5">
<h1>Division Element #5</h1>
<code
>position: relative;<br />
z-index: 1;</code
>
</div>
<div id="div6">
<h1>Division Element #6</h1>
<code
>position: absolute;<br />
z-index: 3;</code
>
</div>
</div>
CSS
* {
margin: 0;
}
html {
padding: 20px;
font:
12px/20px Arial,
sans-serif;
}
div {
opacity: 0.7;
position: relative;
}
h1 {
font: inherit;
font-weight: bold;
}
#div1,
#div2 {
border: 1px dashed #696;
padding: 10px;
background-color: #cfc;
}
#div1 {
z-index: 5;
margin-bottom: 190px;
}
#div2 {
z-index: 2;
}
#div3 {
z-index: 4;
opacity: 1;
position: absolute;
top: 40px;
left: 180px;
width: 330px;
border: 1px dashed #900;
background-color: #fdd;
padding: 40px 20px 20px;
}
#div4,
#div5 {
border: 1px dashed #996;
background-color: #ffc;
}
#div4 {
z-index: 6;
margin-bottom: 15px;
padding: 25px 10px 5px;
}
#div5 {
z-index: 1;
margin-top: 15px;
padding: 5px 10px;
}
#div6 {
z-index: 3;
position: absolute;
top: 20px;
left: 180px;
width: 150px;
height: 125px;
border: 1px dashed #009;
padding-top: 125px;
background-color: #ddf;
text-align: center;
}
ê²°ê³¼
ê°ì´ 보기
- z-indexê° ìë ê²½ì°ì ìì : 기본 ìì ê·ì¹
- floating ì리먼í¸ì ìì : floating ì리먼í¸ë¤ì ì´ë»ê² ë¤ë£¨ì´ì§ëê°
- z-index ì ì© : 기본 ìì ìì를 ë³ê²½í기 ìí´ z-index ì¬ì©í기
- ìì ë§¥ë½ ìì 1 : 2ë 벨 HTML ê³ì¸µêµ¬ì¡°, ë§ì§ë§ ë 벨ìì z-indexê° ì§ì ë ê²½ì°
- ìì ë§¥ë½ ìì 2 : 2ë 벨 HTML ê³ì¸µêµ¬ì¡°, 모ë ë 벨ìì z-indexê° ì§ì ë ê²½ì°
- ìì ë§¥ë½ ìì 3 : 3ë 벨 HTML ê³ì¸µêµ¬ì¡°, ëë²ì§¸ ë 벨ìì z-indexê° ì§ì ë ê²½ì°
- Top layer