CSS Containment
CSS Containment ì¬ìì 목íë ê°ë°ìê° íì´ì§ì íì í¸ë¦¬(subtree)를 íì´ì§ì ëë¨¸ì§ ë¶ë¶ê³¼ ë¶ë¦¬í ì ìëë¡ íì¬ ì¹ íì´ì§ì ì±ë¥ì í¥ììí¤ë ê²ì
ëë¤. ë¸ë¼ì°ì ê° íì´ì§ì ì¼ë¶ê° ë
립ì ìì ì¸ìíë©´ ë ëë§ì ìµì í íê³ ì±ë¥ì ê°ì í ì ììµëë¤. ì¬ìì ë¨ì¼ CSS ìì±(property) containì ì ìí©ëë¤. ì´ ë¬¸ìë ì¬ìì 기본 목í를 ì¤ëª
í©ëë¤.
기본 ìì
ë§ì ì¹ íì´ì§ìë ìë¡ ë 립ì ì¸ ì¬ë¬ ì¹ì ì´ í¬í¨ëì´ ììµëë¤. ì를ë¤ë©´ ìë ë§í¬ì ììì ê°ì´ ìí°í´, í¤ëë¼ì¸, ì½í ì¸ ë¡ ì´ë£¨ì´ì§ 목ë¡ì ëë¤.
<h1>My blog</h1>
<article>
<h2>Heading of a nice article</h2>
<p>Content here.</p>
</article>
<article>
<h2>Another heading of another article</h2>
<p>More content here.</p>
</article>
ê° ìí°í´ìë CSSìì contain ìì±ì ê°ì¼ë¡ content ê° ì ì©ëì´ ììµëë¤.
article {
contain: content;
}
ê° ìí°í´ì íì´ì§ì ë¤ë¥¸ ìí°í´ê³¼ ë
립ì ì´ë¯ë¡ ë¸ë¼ì°ì ì ì´ë¬í ì¬ì¤ì ì리기 ìí´ contain: contentê° í¬í¨ëì´ ììµëë¤. ê·¸ë¬ë©´ ë¸ë¼ì°ì ë ì´ ì 보를 ì¬ì©íì¬ ì»¨í
ì¸ ë¥¼ ë ëë§íë ë°©ë²ì ê²°ì í ì ììµëë¤. ì를ë¤ì´ ë³¼ ì ìë ìì ë°ììë ìí°í´ì ë ëë§íì§ ìì ì ììµëë¤.
ê° <article> ì contain ìì±ì ê°ì content ë¡ ì ê³µíë©´, ì ìì(element)ê° ì½ì
ë ë ë¸ë¼ì°ì ë containing ììë¤ì íì í¸ë¦¬ ì¸ë¶ ììì relayout(reflow)íê±°ë repaint í íìê° ììì ì¸ìí©ëë¤. <article> ì´ ë´ì©ì ë°ë¼ í¬ê¸°ê° ë¬ë¼ì§ëë¡ ì¤íì¼ì ì§ì íëë¼ë(ì: height: auto), ë¸ë¼ì°ì ë í¬ê¸° ë³ê²½ì ê³ ë ¤í´ì¼ í ì ììµëë¤.
ì°ë¦¬ë contain ìì±ì íµí´ ê° ìí°í´ì´ ë
립ì ì´ë¼ê³ ë§íìµëë¤.
content ê°ì contain: layout paintì ì½ì´ì
ëë¤. ë¸ë¼ì°ì ì ììì ë´ë¶ ë ì´ììì´ íì´ì§ì ëë¨¸ì§ ë¶ë¶ê³¼ ìì í ë¶ë¦¬ëì´ ìì¼ë©°, ììì ëí 모ë ê²ì´ ê²½ê³ ë´ë¶ì ê·¸ë ¤ì ¸ ììì ìë ¤ì¤ëë¤. overflowëì´ ë³´ì´ë ê²ì´ ììµëë¤.
ì´ ì ë³´ë íì´ì§ë¥¼ ìì±íë ì¹ ê°ë°ììê² ì¼ë°ì ì¼ë¡ ìë ¤ì ¸ ìì¼ë©°, ì¬ì¤ ë§¤ì° ë¶ëª í©ëë¤. ê·¸ë¬ë ë¸ë¼ì°ì ë ê·íì ìë를 ì¶ì¸¡í ì ìê³ , ìí°í´ì´ ìì í ë 립ì ì¼ ê²ì´ë¼ê³ ê°ì í ì ììµëë¤. ë°ë¼ì ì´ ìì±ì ë¸ë¼ì°ì ìê² ì´ ì¬ì¤ì ì¤ëª íê³ , ê·¸ ì 보를 기ë°ì¼ë¡ ì±ë¥ ìµì í를 ìíí ì ìë ì¢ì ë°©ë²ì ì ê³µí©ëë¤.
주ì ê°ë ë° ì©ì´
ì´ ì¬ìì ì¤ë¡ì§ contain ì´ë¼ë íëì ìì±(property)ë§ ì ìí©ëë¤. ì´ ìì±ì ê°ì í´ë¹ ììì ì ì© í í¬í¨ ì íì ëíë
ëë¤.
Layout containment
article {
contain: layout;
}
Layout ì ì¼ë°ì ì¼ë¡ ì ì²´ 문ìë¡ ë²ìê° ì§ì ë©ëë¤. ì¦, íëì ìì를 ì´ëíë©´ ì ì²´ 문ì를 ë¤ë¥¸ ê³³ì¼ë¡ ì´ëí ì ìë ê²ì²ë¼ ì²ë¦¬í´ì¼ í©ëë¤. ê·¸ë¬ë contain: layout ì ì¬ì©íë©´ ë¸ë¼ì°ì ì ì´ ììë§ íì¸íë©´ ëë¤ê³ ìë ¤ì¤ ì ììµëë¤. ìì ë´ë¶ì 모ë í목ì í´ë¹ ììë¡ ë²ìê° ì§ì ëê³ , íì´ì§ì ëë¨¸ì§ ë¶ë¶ìë ìí¥ì ì£¼ì§ ììµëë¤. ê·¸ë¦¬ê³ containing boxë ë
립ì ì¸ formatting context를 ì¤ì í©ëë¤.
ì¶ê°ì¬í
floatë ì´ììì ë 립ì ì¼ë¡ ìíë©ëë¤.- Margin ì´ layout containment ê²½ê³ë¥¼ ê°ë¡ì§ë¬ ë³í©(collapse)ëì§ ììµëë¤.
- layout 컨í
ì´ëë position:
absolute/fixedì íì í목ì ëí containing blockì´ ë©ëë¤. - containing boxë stacking context를 ìì±í©ëë¤. ë°ë¼ì
z-index를 ì¬ì©í ì ììµëë¤.
Paint containment
article {
contain: paint;
}
Paint containment ë 기본ì ì¼ë¡ ë°ì¤ë¥¼ 주ì ë°ì¤(principal box)ì í¨ë© ê²½ê³ì í´ë¦½(clip - ë§ì¶°ì ì±ì°ê¸°)í©ëë¤. overflowëì´ ë³´ì´ë ê²ì´ ììµëë¤. paint containment ë layout containment ì ë§ì°¬ê°ì§ì
ëë¤. (ì 참조).
ëë¤ë¥¸ ì¥ì ì containing boxê° íë©´ ë°ì ìì¼ë©´, ë¸ë¼ì°ì ê° contained ìì를 paint í íìê° ìë¤ë ê²ì ëë¤. ì´ ë ììê° boxì í¬í¨ëì´ ìì¼ë¯ë¡ íë©´ì íìëì§ ììì¼ í©ëë¤.
Size containment
article {
contain: size;
}
Size containment ë ìì²´ì ì¼ë¡ ì¬ì©ë ë ì±ë¥ ìµì í ë°©ë²ì ë§ì´ ì ê³µíì§ ììµëë¤. ê·¸ë¬ë ì´ë ììì ìì í¬ê¸°ê° ìì ìì²´ì í¬ê¸°ì ìí¥ì ì¤ ì ììì ì미í©ëë¤. ììì í¬ê¸°ë ììì´ ì¡´ì¬íì§ ìë ê²ì²ë¼ ê³ì°ë©ëë¤.
contain: size 를 ì ì©íë©´, ì´ë¥¼ ì ì©í ììì í¬ê¸°ë ì§ì í´ì¼ í©ëë¤. ìëì¼ë¡ í¬ê¸°ë¥¼ ì§ì íì§ ìì¼ë©´, ëë¶ë¶ì ê²½ì° í¬ê¸°ê° 0ì´ ë©ëë¤.
Style containment
article {
contain: style;
}
style containment ë ì´ë¦ìë ë¶êµ¬íê³ Shadow DOMìì ì»ì ì ìë ë²ì(scope) ì¤íì¼ì ì ê³µíì§ ììµëë¤. 주ì ì¬ì© ì¬ë¡ë, ìììì CSS Counter ê° ë³ê²½ëì´ ëë¨¸ì§ í¸ë¦¬ì ìí¥ì ë¯¸ì¹ ì ìë ìí©ì ë°©ì§íë ê²ì ëë¤.
contain: style ì ì¬ì©íë©´ counter-increment ì counter-set ìì±ì´ í´ë¹ íì í¸ë¦¬ë¡ë§ ë²ìê° ì§ì ë ì ì¹´ì´í°ë¥¼ ë§ë¤ ì ììµëë¤.
ì°¸ê³ :
주ì: style containment ë ì¬ììì "at-risk" ì´ë©°, 모ë ê³³ìì ì§ìíì§ ìì ì ììµëë¤(íì¬ Firefoxë ì§ìíì§ ìì).
Special values
contain ìë ë ê°ì§ í¹ìí ê°ì´ ììµëë¤.
contentstrict
ìì ììì 첫 ë²ì§¸ë¥¼ ë§ë¬ìµëë¤. contain: content ë layout ê³¼ paint containment를 모ë íì±íí©ëë¤. ì¬ìììë ì´ ê°ì "ê´ë²ìíê² ì ì©í기ì í©ë¦¬ì ì¼ë¡ ìì " íë¤ê³ ì¤ëª
í©ëë¤. size containment 를 ì ì©íì§ ìì¼ë¯ë¡ ììì í¬ê¸°ì ìì¡´íê³ , ë문ì ë°ì¤ í¬ê¸°ê° 0ì´ ë ìíì´ ììµëë¤.
ê°ë¥í ë§ì containment 를 ì»ì¼ë ¤ë©´ contain: strict 를 ì¬ì©í ì ììµëë¤. ì´ë contain: size layout paint ì ê°ìµëë¤. ëë style containment 를 ì§ìíë ë¸ë¼ì°ì ììë ë¤ìê³¼ ê°ì´ ì¬ì©í ì ììµëë¤.
contain: strict;
contain: strict style;