ë€ìí êžë¡ë² ì¹ íë«íŒ ì ë°ì ê±žì³ íšê³Œì ìž ì±ë¥ íë¡íìŒë§ ë° ìµì í륌 ìí CSS íë¡í ê·ì¹ì ìŽíŽ ë° êµ¬íì ëí ì¢ í© ê°ìŽëì ëë€.
CSS íë¡í ê·ì¹: êžë¡ë² ì¹ ê²œíì ìí ì±ë¥ íë¡íìŒë§ 구í ë§ì€í°íêž°
êžë¡ë² ì¹ ê°ë°ì ìëì ìž í겜ìì ìŒêŽëê² ë¹ ë¥Žê³ ë°ììŽ ë¹ ë¥ž ì¬ì©ì 겜íì ì ê³µíë ê²ì ë§€ì° ì€ìí©ëë€. ì ìžê³ ì¬ì©ìë ë€ìí ìží°ë· ìë, êž°êž° ì±ë¥, 묞íì êž°ë륌 ê°ì§ê³ ììŒë©°, ëê¹ ìë ìížìì©ì ì구í©ëë€. ìŽë¥Œ ë¬ì±íë íµì¬ìë ì±ë¥ íë¡íìŒë§, í¹í CSS륌 íµí ê¹ì ìŽíŽì íšê³Œì ìž êµ¬íìŽ ììµëë€. ìŽ ê°ìŽëë CSS íë¡í ê·ì¹ì ë³µì¡ì±ì íê³ ë€ìŽ, ì ìžê³ ì¬ì©ì륌 ìí ì¹ ì í늬ìŒìŽì ì ì±ë¥ì ì§ëš, ìµì ííê³ ê¶ê·¹ì ìŒë¡ í¥ììí€ë ë°©ë²ì í구í©ëë€.
êž°ìŽ ìŽíŽíêž°: CSSì ì¹ ì±ë¥
CSS(Cascading Style Sheets)ë ì¹ ëììžì ìŽììŒë¡, ì¹ íìŽì§ì ìê°ì ííì ê²°ì í©ëë€. 죌ë ìí ì 믞íì ìŽì§ë§, ì±ë¥ì 믞ì¹ë ìí¥ì ì¬ì€íë©° ì¢ ì¢ ê³Œìíê°ë©ëë€. ë¹íšìšì ìŒë¡ ìì±ëê±°ë, ì§ëì¹ê² ë³µì¡íê±°ë, 곌ëíê² í° CSS íìŒì ì¹ì¬ìŽížì ë¡ë© ìëì ë ëë§ ì±ë¥ì í¬ê² ì íŽí ì ììµëë€. ë°ë¡ ìŽ ì§ì ìì ì±ë¥ íë¡íìŒë§ìŽ ì€ìíŽì§ëë€.
ì±ë¥ íë¡íìŒë§ì ìœëì 늬ìì€ì ì€íì ë¶ìíì¬ ë³ëª© íì곌 ê°ì ììì ìë³íë ê²ì í¬íší©ëë€. CSSì 겜ì°, ìŽë ë€ìì ìŽíŽíë ê²ì ì믞í©ëë€:
- íìŒ í¬êž° ë° HTTP ìì²: CSS íìŒì ììí í¬êž°ì ìŽë¥Œ ë€ìŽë¡ëíë ë° íìí ìì² ìë ìŽêž° íìŽì§ ë¡ë ìê°ì ì§ì ì ìž ìí¥ì 믞칩ëë€.
- íì± ë° ë ëë§: ëžëŒì°ì ê° CSS륌 íì±íê³ , ë ë ížëŠ¬ë¥Œ 구ì¶íë©°, ì€íìŒì ì ì©íë ë°©ìì ìœí ìž ê° íìëë ë° ê±žëŠ¬ë ìê°ì ìí¥ì ì€ëë€.
- ì íì íšìšì±: CSS ì íìì ë³µì¡ì±ê³Œ ëª ìëë ëžëŒì°ì ì ì€íìŒ ì¬ê³ì° íë¡ìžì€ ì±ë¥ì ìí¥ì ë¯žì¹ ì ììµëë€.
- ë ìŽìì ë° ëŠ¬íìžíž: í¹ì CSS ìì±ì ë¹ì©ìŽ ë§ìŽ ëë ë ìŽìì ì¬ê³ì°(늬íë¡ì°)ìŽë ììì 늬íìžížë¥Œ ì ë°íì¬ ì¬ì©ì ìížìì© ì€ ë°ìì±ì ìí¥ì ì€ ì ììµëë€.
ì±ë¥ ìµì íìì CSS íë¡í ê·ì¹ì ìí
W3C ëª ìžìì ê°ìŽ ë³Žížì ìŒë¡ ì ìë ëšìŒ "CSS íë¡í ê·ì¹"ì ìì§ë§, ìŽ ì©ìŽë ì¢ ì¢ CSS ì±ë¥ì íë¡íìŒë§íê³ ìµì ííë ë° ì¬ì©ëë ìŒë šì ëªšë² ì¬ë¡, ê°ìŽëëŒìž ë° íë¡ê·žëë° ë°©ìì ì ê·Œë²ì ì믞í©ëë€. ìŽë¬í "ê·ì¹"ì 볞ì§ì ìŒë¡ ì±ë¥ì êŽì ìì CSS륌 ê²í í ë ì ì©íë ìì¹ê³Œ êž°ì ì ëë€.
íšê³Œì ìž CSS íë¡íìŒë§ì ë€ìì í¬íší©ëë€:
- ìž¡ì : CSSì êŽë šë ë€ìí ì±ë¥ ì§í륌 ì ëíí©ëë€.
- ë¶ì: CSS ëŽìì ì±ë¥ 묞ì ì 귌볞 ììžì ìë³í©ëë€.
- ìµì í: íìŒ í¬êž°ë¥Œ ì€ìŽê³ , ë ëë§ì ê°ì íë©°, ì íì íšìšì±ì í¥ììí€ë ì ëµì 구íí©ëë€.
- ë°ë³µ: ì í늬ìŒìŽì ìŽ ë°ì íšì ë°ëŒ ì§ìì ìŒë¡ CSS륌 몚ëí°ë§íê³ ê°ì í©ëë€.
CSS ì±ë¥ íë¡íìŒë§ì íµì¬ ìì
CSS ì±ë¥ì íšê³Œì ìŒë¡ íë¡íìŒë§íë €ë©Ž ê°ë°ìë ëª ê°ì§ íµì¬ ììì ì§ì€íŽìŒ í©ëë€:
1. CSS íìŒ í¬êž° ë° ì ë¬
í° CSS íìŒì ìŒë°ì ìž ì±ë¥ ë³ëª© íìì ëë€. ì¬êž°ì íë¡íìŒë§ì ë€ìì í¬íší©ëë€:
- ì¶ì(Minification): êž°ë¥ ë³ê²œ ììŽ CSS ìœëìì ë¶íìí 묞ì(공백, 죌ì)륌 ì ê±°í©ëë€. UglifyJS, Terserì ê°ì ë구ë ë¹ë íë¡ìžì€ì ëŽì¥ë ìµì í êž°ë¥ìŒë¡ ìŽë¥Œ ìëíí ì ììµëë€.
- Gzip/Brotli ìì¶: ìë² ìž¡ ìì¶ì ë€ížìí¬ë¥Œ íµíŽ ì ì¡ëë CSS íìŒì í¬êž°ë¥Œ í¬ê² ì€ì¬ì€ëë€. ìŽë êžë¡ë² ì ë¬ì ìí Ʞ볞 ëšê³ì ëë€.
- ìœë ë¶í (Code Splitting): íëì ê±°ëí CSS íìŒì ë¡ëíë ëì , CSS륌 ë ìê³ ë ŒëŠ¬ì ìž ì²í¬ë¡ ë¶í íì¬ íìí ëë§ ë¡ëí©ëë€. ìŽë í¬ê³ ë³µì¡í ì í늬ìŒìŽì ì í¹í ì ì©í©ëë€. ì륌 ë€ìŽ, êžë¡ë² ì ì ìê±°ë ì¬ìŽížë 몚ë íìŽì§ì ëí íµì¬ ì€íìŒì ë¡ëí ë€ì, ì í íìŽì§ë ê²°ì íëŠê³Œ ê°ì í¹ì ì¹ì ì ì ê·Œí ëë§ íŽë¹ ì€íìŒì ë¡ëí ì ììµëë€.
- íµì¬ CSS(Critical CSS): íìŽì§ì ìŽêž° íì ìì(above-the-fold) ìœí ìž ì íìí CSS륌 ìë³íê³ ìžëŒìžìŒë¡ ìœì í©ëë€. ìŽë¥Œ íµíŽ ëžëŒì°ì ë ìŽêž° ë·°í¬ížë¥Œ íšì¬ ë¹ ë¥Žê² ë ëë§íì¬ ì²Žê° ì±ë¥ì í¥ììí¬ ì ììµëë€. 'critical'곌 ê°ì ëêµ¬ë¡ ìŽ íë¡ìžì€ë¥Œ ìëíí ì ììµëë€.
- ì¬ì©íì§ ìë CSS ì ê±°: PurgeCSSì ê°ì ë구ë HTML, JavaScript ë° êž°í í í늿 íìŒì ì€ìºíì¬ ì¬ì©ëì§ ìë CSS ê·ì¹ì ìë³íê³ ì ê±°í ì ììµëë€. ìŽë ë€ìí ìì€ìì ëì ë CSS륌 ê°ì§ ëê·ëªš íë¡ì ížì ë§€ì° ì ì©í©ëë€.
2. CSS ì íìì ìºì€ìŒìŽë
CSS ì íìê° ìì±ëë ë°©ì곌 ìºì€ìŒìŽëì ìížìì©íë ë°©ìì ë ëë§ ì±ë¥ì ìë¹í ìí¥ì ë¯žì¹ ì ììµëë€. ë³µì¡í ì íìë ëžëŒì°ì ìì ë ë§ì ì²ëЬ ìê°ì íìë¡ í ì ììµëë€.
- ì íì ëª ìë: ëª ìëë ìºì€ìŒìŽëì íìì ìŽì§ë§, 곌ëíê² êµ¬ì²Žì ìž ì íì(ì: ê¹ê² ì€ì²©ë íì ì íì, 곌ëí `!important` ì¬ì©)ë ì€íìŒì ì¬ì ìíêž° ìŽë µê² ë§ë€ê³ ì€íìŒ ë§€ì¹ì ê³ì° ë¹ì©ì ìŠê°ìí¬ ì ììµëë€. íë¡íìŒë§ì ê°ë¥í ê²œì° ì§ëì¹ê² 구첎ì ìž ì íì륌 ìë³íê³ ëšìííë ê²ì í¬íší©ëë€.
- ì 첎 ì íì (`*`): ì 첎 ì íì륌 곌ëíê² ì¬ì©í멎 ëžëŒì°ì ê° íìŽì§ì 몚ë ììì ì€íìŒì ì ì©íê² ëìŽ ë¶íìí ì€íìŒ ì¬ê³ì°ì ì ë°í ì ììµëë€.
- íì ê²°í©ì (` `): ê°ë ¥íì§ë§, íì ì íì 첎ìž(ì: `div ul li a`)ì íŽëì€ë ID ì íìë³Žë€ ê³ì° ë¹ì©ìŽ ë ë§ìŽ ë€ ì ììµëë€. íë¡íìŒë§ì íµíŽ ìŽë¬í 첎ìžì ìµì ííšìŒë¡ìš ì±ë¥ í¥ìì ë°ê²¬í ì ììµëë€.
- ìì± ì íì: `[type='text']`ì ê°ì ì íìë íŽëì€ ì íìë³Žë€ ë늎 ì ììŒë©°, í¹í ëžëŒì°ì ì ìíŽ íšìšì ìŒë¡ ìžë±ì±ëì§ ìë ê²œì° ëì± ê·žë ìµëë€.
- íëì ì ê·Œ ë°©ì: BEM(Block, Element, Modifier)ìŽë CSS 몚ë곌 ê°ì íëì ìž CSS ë°©ë²ë¡ 곌 êŽë¡ë¥Œ íì©í멎 íŽëì€ êž°ë° ì íì ì¬ì©ì ìŽì§íì¬ ë 첎ê³ì ìŽê³ ì ì§ë³Žìíêž° ì¬ì°ë©°, ì¢ ì¢ ë ì±ë¥ìŽ ì¢ì CSS륌 ë§ë€ ì ììµëë€.
3. ë ëë§ ì±ë¥ê³Œ ë ìŽìì ìŽë
í¹ì CSS ìì±ì ë¹ì©ìŽ ë§ìŽ ëë ëžëŒì°ì ìì ì ì ë°íì¬ ë ëë§ì ëëŠ¬ê² íê³ ëì ë ìŽìì ìŽë(CLS)ìŒë¡ ìë €ì§ ê±°ì¬ëЬë ìê°ì ë³í륌 ìŽëí ì ììµëë€.
- ë¹ì©ìŽ ë§ìŽ ëë ìì±: `box-shadow`, `filter`, `border-radius`ì ê°ì ìì± ë° ë ìŽììì ìí¥ì 믞ì¹ë ìì±(`width`, `height`, `margin`, `padding`)ì 늬íìžížë 늬íë¡ì°ë¥Œ ì ë°í ì ììµëë€. íë¡íìŒë§ì ìŽë€ ìì±ìŽ ê°ì¥ í° ìí¥ì 믞ì¹ëì§ ìë³íë ë° ëììŽ ë©ëë€.
- ë ìŽìì ì€ëì±(Layout Thrashing): JavaScriptê° ë§ì ì í늬ìŒìŽì ìì ë ìŽìì ìì±(ì: `offsetHeight`)ì ì죌 ìœì í ë ìŽììì ë³ê²œíë ìì±ì ìì±í멎 "ë ìŽìì ì€ëì±"ìŽ ë°ìí ì ììŒë©°, ìŽë¡ ìžíŽ ëžëŒì°ì ë ë ìŽììì ë°ë³µì ìŒë¡ ì¬ê³ì°íŽìŒ í©ëë€. ì£Œë¡ JavaScript 묞ì ìŽì§ë§ ë¹íšìšì ìž CSSê° ìŽë¥Œ ì íìí¬ ì ììµëë€.
- ë ìŽìì ìŽë(CLS) ë°©ì§: êžë¡ë² ì¬ì©ì, í¹í 몚ë°ìŒ ë€ížìí¬ ì¬ì©ìì ê²œì° CLSë í¹í ë°©íŽê° ë ì ììµëë€. CSSë ìŽë¥Œ ìííë ë° íµì¬ì ìž ìí ì í©ëë€:
- ìŽë¯žì§ ë° ë¯žëìŽì ëí í¬êž° ì§ì : `width` ë° `height` ìì±ìŽë CSS `aspect-ratio`륌 ì¬ì©í멎 늬ìì€ê° ë¡ëë ë ìœí ìž ê° ìŽëíë ê²ì ë°©ì§í ì ììµëë€.
- ëì ìœí ìž ë¥Œ ìí ê³µê° ììœ: CSS륌 ì¬ì©íì¬ êŽê³ ë ë€ë¥ž ëì ìŒë¡ ë¡ëëë ìœí ìž ê° ëíëêž° ì ì ê³µê°ì 믞늬 í볎í©ëë€.
- Ʞ졎 ìœí ìž ìì ìœí ìž ìœì íŒíêž°: ë ìŽìì ìŽëìŽ ììëê³ ê³ ë €ë 겜ì°ê° ìëëŒë©Ž íŒíŽìŒ í©ëë€.
- `will-change` ìì±: ìŽ CSS ìì±ì ë³ê²œë ê°ë¥ì±ìŽ ìë ììì ëíŽ ëžëŒì°ì ì íížë¥Œ 죌Ʞ ìíŽ ì ì€íê² ì¬ì©ë ì ììŒë©°, ìŽë¥Œ íµíŽ í©ì±ê³Œ ê°ì ìµì í륌 í ì ììµëë€. ê·žë¬ë 곌ëíê² ì¬ì©í멎 ë©ëªšëЬ ìë¹ê° ìŠê°í ì ììµëë€. íë¡íìŒë§ì ìŽ ìì±ìŽ ê°ì¥ ì ìµí ê³³ì ê²°ì íë ë° ëììŽ ë©ëë€.
4. CSS ì ëë©ìŽì ì±ë¥
ì ëë©ìŽì ì ì¬ì©ì 겜íì í¥ììí€ì§ë§, ì ëë¡ êµ¬íëì§ ìì ì ëë©ìŽì ì ì±ë¥ì ì íìí¬ ì ììµëë€.
- `transform` ë° `opacity` ì íž: ìŽë¬í ìì±ì ì¢ ì¢ ëžëŒì°ì ì 컎í¬ì§í° ë ìŽìŽìì ì²ëЬë ì ììŽ, ì£Œë³ ììì ë ìŽìì ì¬ê³ì°ìŽë 늬íìžížë¥Œ ì ë°íì§ ìë ë ë¶ëë¬ìŽ ì ëë©ìŽì ì ë§ëëë€.
- ë ìŽìì ìì± ì ëë©ìŽì íŒíêž°: `width`, `height`, `margin` ëë `top`곌 ê°ì ìì±ì ì ëë©ìŽì íë ê²ì ë§€ì° ë¹ì©ìŽ ë§ìŽ ë€ ì ììµëë€.
- JavaScript ì ëë©ìŽì ì ìí `requestAnimationFrame`: JavaScriptë¡ ì ëë©ìŽì ì ë§ë€ ë `requestAnimationFrame`ì ì¬ì©í멎 ì ëë©ìŽì ìŽ ëžëŒì°ì ì ë ëë§ ì£Œêž°ì ëêž°íëìŽ ë ë¶ëëœê³ íšìšì ìž ì ëë©ìŽì ì 볎ì¥í ì ììµëë€.
- ì ëë©ìŽì ì±ë¥ ìì°: í¹í ìŒë¶ êžë¡ë² ì§ììì íí ì ì¬ì êž°êž°ë ë늰 ë€ížìí¬ í겜ì ìíŽ ëì ì ëë©ìŽì ìë ì ëë©ìŽì ììì ë³µì¡ì±ì ëí ì íì ì€ì íë ê²ì ê³ ë €íììì€.
CSS ì±ë¥ íë¡íìŒë§ì ìí ë구 ë° êž°ì
CSS ì±ë¥ íë¡íìŒë§ì ëí ê²¬ê³ í ì ê·Œ ë°©ìì ìŒë šì ì 묞 ë구륌 íì©íŽìŒ í©ëë€:
1. ëžëŒì°ì ê°ë°ì ë구
몚ë 죌ì ëžëŒì°ì ìë CSS ì±ë¥ì ëí íµì°°ë ¥ì ì ê³µíë ê°ë ¥í ê°ë°ì ëêµ¬ê° íì¬ëìŽ ììµëë€.
- Chrome ê°ë°ì ë구:
- ì±ë¥(Performance) í: CSS íì±, ì€íìŒ ì¬ê³ì°, ë ìŽìì ë° íìží ì í¬íší ëžëŒì°ì íëì êž°ë¡í©ëë€. "Main" ì€ë ëìì í¹í "Style" ë° "Layout"곌 êŽë šë ꞎ ìì ì ì°Ÿì볎ììì€.
- 컀ë²ëЬì§(Coverage) í: ë¶íìí ìœë륌 ì ê±°íë ë° ì€ìí, ì¬ìŽíž ì 첎ìì ì¬ì©ëì§ ìë CSS(ë° JavaScript)륌 ìë³í©ëë€.
- ë ëë§(Rendering) í: "Paint Flashing" ë° "Layout Shift Regions"ì ê°ì êž°ë¥ì 늬íìží 곌 ë ìŽìì ìŽëì ìê°ííë ë° ëììŽ ë©ëë€.
- Firefox ê°ë°ì ë구: Chrome곌 ì ì¬íë©°, ë ëë§ ìì ì ììží ë¶ìì í¬íšíì¬ ê°ë ¥í ì±ë¥ íë¡íìŒë§ êž°ë¥ì ì ê³µí©ëë€.
- Safari ì¹ ê²ì¬êž°: ì±ë¥ ë¶ì ë구륌 ì ê³µíë©°, êžë¡ë² ìì¥ì ìë¹ ë¶ë¶ì ì°šì§íë Apple êž°êž°ìì íë¡íìŒë§íë ë° í¹í ì ì©í©ëë€.
2. ìšëŒìž ì±ë¥ í ì€íž ë구
ìŽë¬í ë구ë ì€ì í겜ì ì뮬ë ìŽì íê³ í¬êŽì ìž ë³Žê³ ì륌 ì ê³µí©ëë€.
- Google PageSpeed Insights: íìŽì§ ìœí ìž ë¥Œ ë¶ìíê³ CSS ìµì í ê¶ì¥ ì¬íì í¬íšíì¬ ì±ë¥ í¥ìì ìí ì ìì ì ê³µí©ëë€. 몚ë°ìŒê³Œ ë°ì€í¬í± 몚ëì ëí ì ì륌 ì ê³µí©ëë€.
- WebPageTest: ì§ëЬì ìŒë¡ ë€ìí í ì€íž ìì¹ìì ììží ì±ë¥ ì§í륌 ì ê³µíë©°, ë€ìí ë€ížìí¬ ì¡°ê±Žê³Œ êž°êž° ì íì ì뮬ë ìŽì í©ëë€. ìŽë ìžê³ ì¬ë¬ ì§ìì ì¬ì©ì륌 ìíŽ CSSê° ìŽë»ê² ìëíëì§ ìŽíŽíë ë° ë§€ì° ì€ìí©ëë€.
- GTmetrix: Lighthouse ë° êž°í ë¶ì ë구륌 ê²°í©íì¬ ì±ë¥ ì ìì ì€í ê°ë¥í ê¶ì¥ ì¬íì ì ê³µíë©°, ë€ìí êžë¡ë² ìì¹ìì í ì€íží ì ìë ìµì ì ì ê³µí©ëë€.
3. ë¹ë ë구 ë° ëŠ°í°
ê°ë° ìí¬íë¡ì°ì ì±ë¥ ê²ì¬ë¥Œ íµí©íë ê²ìŽ íµì¬ì ëë€.
- ëŠ°í° (ì: Stylelint): ì§ëì¹ê² 구첎ì ìž ì íì륌 íì©íì§ ìê±°ë ì ëë©ìŽì ì `transform` ë° `opacity` ì¬ì©ì ê¶ì¥íë ë± ì±ë¥ ëªšë² ì¬ë¡ë¥Œ ê°ì íë ê·ì¹ìŒë¡ 구ì±í ì ììµëë€.
- ë²ë€ë¬ (ì: Webpack, Rollup): ë¹ë íë¡ìžì€ì ìŒë¶ë¡ CSS ì¶ì, ì ê±° ë° íµì¬ CSS ì¶ì¶ì ìí íë¬ê·žìžì ì ê³µí©ëë€.
CSS íë¡í ê·ì¹ 구í: ì€ì©ì ìž ìí¬íë¡ì°
CSS ì±ë¥ íë¡íìŒë§ì 구ííë 첎ê³ì ìž ì ê·Œ ë°©ìì ìŒêŽë ê°ì ì 볎ì¥í©ëë€:
1ëšê³: êž°ì€ì ì€ì
ë³ê²œ ì¬íì ì ì©íêž° ì ì íì¬ ì±ë¥ì ìž¡ì íììì€. ëíì ìž êžë¡ë² ìì¹ìì PageSpeed Insights ëë WebPageTestì ê°ì ë구륌 ì¬ì©íì¬ ë¡ë ìê°, ìížìì©ì± ë° ìê°ì ìì ì±ì ëí CSSì ìí¥ì êž°ì€ìŒë¡ íì íììì€.
2ëšê³: ëžëŒì°ì ê°ë°ì ëêµ¬ë¡ ë³ëª© íì ìë³
ê°ë° ì€ì ëžëŒì°ì ê°ë°ì ë구ì ì±ë¥ íì ì êž°ì ìŒë¡ ì¬ì©íììì€. ì í늬ìŒìŽì ì ë¡ëíê³ ìŒë°ì ìž ì¬ì©ì ìížìì©ìŽë íìŽì§ ë¡ë륌 êž°ë¡íììì€. íìëŒìžìì ë€ìì ë¶ìíììì€:
- ë³µì¡í ì íì ë§€ì¹ ëë ì¬ê³ì°ì ëíëŽë ì¥êž° ì€í "Style" ìì .
- ìë¹í ìê°ì ìë¹íë "Layout" ìì ìŒë¡, ë¹ì©ìŽ ë§ìŽ ëë CSS ìì±ìŽë ë ìŽìì ë³ê²œì ê°ëЬíµëë€.
- "Paint" ìì , í¹í ë¹ë²íê±°ë í멎ì ëì ììì ì°šì§íë ìì .
3ëšê³: ì¬ì©íì§ ìë CSS ê°ì¬ ë° ì ê±°
Chrome ê°ë°ì ë구ì 컀ë²ëŠ¬ì§ íìŽë ë¹ë íë¡ìžì€ì PurgeCSSì ê°ì ë구륌 íì©íììì€. ì ì©ëì§ ìë CSS ê·ì¹ì 첎ê³ì ìŒë¡ ì ê±°íììì€. ìŽë íìŒ í¬êž°ì íì± ì€ë²í€ë륌 ì€ìŽë ê°ëší ë°©ë²ì ëë€.
4ëšê³: ì íì ëª ìë ë° êµ¬ì¡° ìµì í
CSS ìœëë² ìŽì€ë¥Œ ê²í íììì€. ë€ìì ì°Ÿì볎ììì€:
- ì§ëì¹ê² ì€ì²©ë ì íì.
- íì ê²°í©ìì 곌ëí ì¬ì©.
- ë¶íìí `!important` ì ìž.
- ë 깚ëíê³ êŽëЬíêž° ì¬ìŽ ì íì륌 ìíŽ ì ížëŠ¬í° íŽëì€ë 컎í¬ëíž êž°ë° CSS륌 ì¬ì©íì¬ ì€íìŒì 늬í©í ë§í êž°í.
5ëšê³: íµì¬ CSS ë° ìœë ë¶í 구í
ì€ìí ì¬ì©ì ì¬ì ì 겜ì°, ìŽêž° ë·°í¬ížì íìí CSS륌 ìë³íê³ ìžëŒìžìŒë¡ ìœì íììì€. ëê·ëªš ì í늬ìŒìŽì ì 겜ì°, íìì ë°ëŒ CSS 몚ëì ì ê³µíêž° ìíŽ ìœë ë¶í ì 구ííììì€. ìŽë ë늰 ë€ížìí¬ë ì±ë¥ìŽ ë®ì ꞰꞰ륌 ì¬ì©íë ì¬ì©ììê² í¹í íšê³Œì ì ëë€.
6ëšê³: ë ëë§ ë° ì ëë©ìŽì ìµì íì ì§ì€
`transform` ë° `opacity` ì ëë©ìŽì ì ì°ì ìíììì€. ë ìŽìì ì¬ê³ì°ì ì ë°íë ìì±ì ì ìíììì€. `will-change`ë ì ì€íê² ì¬ì©íê³ íë¡íìŒë§ì íµíŽ ê·ž ìŽì ìŽ íìžë íìë§ ì¬ì©íììì€. ì ëë©ìŽì ìŽ ë¶ëëœê³ ìê°ì ìž ë²ë² 거늌(jank)ì ìŒìŒí€ì§ ìëë¡ íììì€.
7ëšê³: ì§ìì ìž êžë¡ë² 몚ëí°ë§ ë° í ì€íž
ì±ë¥ì ìŒíì± íŽê²°ì± ìŽ ìëëë€. WebPageTestì ê°ì êžë¡ë² í ì€íž ë구륌 ì¬ì©íì¬ ì êž°ì ìŒë¡ ì¬ìŽížë¥Œ ë€ì í ì€ížíììì€. ì¬ì©ì 겜íì ì§íë¡ ìœìŽ ì¹ ë°ìŽí(LCP, FID/INP, CLS)ì 몚ëí°ë§íììì€. CI/CD íìŽíëŒìžì ì±ë¥ ê²ì¬ë¥Œ íµí©íì¬ íê·ë¥Œ ì¡°êž°ì ë°ê²¬íììì€.
CSS ì±ë¥ì ëí êžë¡ë² ê³ ë € ì¬í
êžë¡ë² ì¬ì©ì륌 ìíŽ ìµì íí ë ëª ê°ì§ ììì í¹ë³í 죌ìê° íìí©ëë€:
- ë€ížìí¬ ì¡°ê±Ž: ë€ìí ë²ìì ë€ížìí¬ ìë륌 ê°ì íììì€. ìŽêž° ë¡ë ìê°(íµì¬ CSS, ìì¶, ì¶ì)ì ì€ìŽê³ ìì² ì륌 ìµìííë ìµì í륌 ì°ì ìíììì€.
- êž°êž° ë€ìì±: ì¬ì©ìë ê³ êž ë°ì€í¬í±ë¶í° ì ì¬ì íŽëí°ì ìŽë¥Žêž°ê¹ì§ ë€ìí êž°êž°ìì ì¬ìŽížì ì ìí ê²ì ëë€. ìŽ ë²ì ì ë°ì ê±žì³ ì±ë¥ìŽ ì¢ëë¡ CSS륌 ìµì ííê³ , ì ëë©ìŽì ì ë ì ížíë ì¬ì©ì륌 ìíŽ `prefers-reduced-motion`곌 ê°ì êž°ì ì ì¬ì©í ì ììµëë€.
- ìžìŽ ë° íì§í: ì§ì ì ìž CSS ì±ë¥ 묞ì ë ìëì§ë§, í ì€ížê° ë ëë§ëë ë°©ììŽ ë ìŽììì ìí¥ì ë¯žì¹ ì ììµëë€. CSSê° ê³Œëí ë ìŽìì ìŽëì ì ë°íì§ ììŒë©Žì ë€ìí êžêŒŽ í¬êž°ì í ì€íž êžžìŽë¥Œ ìì°ì€ëœê² ì²ëЬíëë¡ íììì€. 컀ì€í ì¹ í°ížì ì±ë¥ ìí¥ì ê³ ë €íì¬ íšìšì ìŒë¡ ë¡ëëëë¡ íììì€.
- ì§ìë³ ìží°ë· ìžíëŒ: ìŒë¶ ì§ìììë ìží°ë· ìžíëŒê° ë ë°ë¬íì¬ ëêž° ìê°ìŽ êžžê³ ëìíìŽ ë®ì ì ììµëë€. ë°ëŒì ë°ìŽí° ì ì¡ì ëí ì€ìŽë ìµì íê° ëì± ì€ìí©ëë€.
CSS ì±ë¥ íë¡íìŒë§ì 믞ë
ì¹ ì±ë¥ ë¶ìŒë ëìììŽ ì§ííê³ ììµëë€. ìë¡ìŽ CSS êž°ë¥ê³Œ ëžëŒì°ì APIë ì°ëŠ¬ê° ì±ë¥ì ì ê·Œíë ë°©ìì ê³ìíŽì íì±í ê²ì ëë€:
- CSS 격늬(Containment): `contain`곌 ê°ì ìì±ì íµíŽ ê°ë°ìë ëžëŒì°ì ì ììì íì ížëŠ¬ê° í¹ì 격늬 ìì±ì ê°ì§ê³ ììì ìë €, ë ìŽìì ë° ì€íìŒ ì¬ê³ì°ì ë²ì륌 ì ííì¬ ë íšìšì ìž ë ëë§ì ê°ë¥íê² í©ëë€.
- CSS íëë(Houdini): ìŽ ì ìì€ API ìžížë ê°ë°ììê² ëžëŒì°ì ì ë ëë§ ìì§ì ëí ì ê·Œ ê¶íì ë¶ì¬íì¬ ì»€ì€í CSS ìì±, íìžíž ìí¬ëŠ¿, ë ìŽìì ìí¬ëŠ¿ì ì¬ì©í ì ìê² í©ëë€. ê³ êž êž°ì ìŽì§ë§, ê³ ëë¡ ìµì íë 컀ì€í ë ëë§ì ìí ìì²ë ì ì¬ë ¥ì ì ê³µí©ëë€.
- AI ë° ëšžì ë¬ë: 믞ëì íë¡íìŒë§ ë구ë AI륌 íì©íì¬ ì±ë¥ 묞ì 륌 ììž¡íê±°ë íìµë íšíŽì êž°ë°ìŒë¡ ìµì í륌 ìëìŒë¡ ì ìí ì ììµëë€.
ê²°ë¡
ë¶ì§ë°í íë¡íìŒë§ì íµíŽ CSS ì±ë¥ì ë§ì€í°íë ê²ì ëšìí êž°ì ì ì°ìµìŽ ìëëŒ, êžë¡ë² ì¬ì©ììê² íìí ì¬ì©ì 겜íì ì ê³µíêž° ìí 귌볞ì ìž ì구 ì¬íì ëë€. CSSê° ë¡ë© ìê°, ë ëë§ ë° ìížìì©ì±ì 믞ì¹ë ìí¥ì ìŽíŽíê³ ì¬ë°ë¥ž ë구ì êž°ì ì ì¬ì©íšìŒë¡ìš ê°ë°ìë ì ìžê³ì ìŒë¡ ë ë¹ ë¥Žê³ , ë ë°ììŽ ì¢ìŒë©°, ë ì ê·Œíêž° ì¬ìŽ ì¹ì¬ìŽížë¥Œ 구ì¶í ì ììµëë€. "CSS íë¡í ê·ì¹"ì 볞ì§ì ìŒë¡ 몚ë ì¬ì©ìê° ìì ì ìì¹ë êž°êž°ì êŽê³ììŽ ë¶ëëœê³ ë§€ë ¥ì ìž ê²œíì í ì ìëë¡ ì°ëЬ ì€íìŒìížì 몚ë 잡멎ì ìž¡ì , ë¶ì ë° ìµì ííë €ë ì§ìì ìž ë žë ¥ì ëë€.