# [[CSSOM(CSS Object Model)|CSSOM(CSS Object Model]] ## ๐Ÿ“Œ Brief Summary [[CSSOM|CSSOM]](CSS Object Model)์€ ์›น ํŽ˜์ด์ง€์˜ DOM(Document Object Model) ์š”์†Œ๋“ค์ด ์–ด๋–ป๊ฒŒ ์Šคํƒ€์ผ๋ง๋˜๋Š”์ง€์— ๋Œ€ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฐ์ฒด ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค [1, 2]. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ œ๊ณต๋ฐ›์€ CSS ๊ทœ์น™์„ ํŒŒ์‹ฑํ•˜์—ฌ ๋ถ€๋ชจ, ์ž์‹, ํ˜•์ œ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„ ๋…ธ๋“œ ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค [3, 4]. ์™„์„ฑ๋œ CSSOM์€ DOM๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ํ™”๋ฉด์— ํ”ฝ์…€์„ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•œ ๋ Œ๋” ํŠธ๋ฆฌ([[Render Tree|Render Tree]])๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [5, 6]. ## ๐Ÿ“– Core Content - **๋ Œ๋”๋ง ์ฐจ๋‹จ ํŠน์„ฑ (Render-[[Blocking|Blocking]]):** DOM ํŠธ๋ฆฌ์˜ ์ƒ์„ฑ์€ ์ ์ง„์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€์ง€๋งŒ, CSSOM ์ƒ์„ฑ์€ ์ ์ง„์ ์ด์ง€ ์•Š์€ ๋ Œ๋”๋ง ์ฐจ๋‹จ(render-blocking) ์ž‘์—…์ž…๋‹ˆ๋‹ค [1, 2]. ๋ธŒ๋ผ์šฐ์ €๋Š” ์Šคํƒ€์ผ์ด ์ ์šฉ๋˜์ง€ ์•Š์€ ๋‚  ๊ฒƒ์˜ HTML ์ฝ˜ํ…์ธ ๊ฐ€ ํ™”๋ฉด์— ๋ฒˆ์ฉ์ด๋ฉฐ ๋‚˜ํƒ€๋‚˜๋Š” ํ˜„์ƒ(FOUC, Flash of Unstyled Content)์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์Šคํƒ€์ผ์‹œํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜์—ฌ CSSOM์ด ์™„์„ฑ๋  ๋•Œ๊นŒ์ง€ ํŽ˜์ด์ง€ ๋ Œ๋”๋ง์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค [1, 2]. - **ํŠธ๋ฆฌ ๊ตฌ์กฐ์™€ ์บ์Šค์ผ€์ด๋”ฉ (Cascading):** CSSOM์€ CSS ๊ทœ์น™์— ๋”ฐ๋ผ ๋…ธ๋“œ ํŠธ๋ฆฌ๋ฅผ ํ˜•์„ฑํ•˜๋ฉฐ, ํ•˜์œ„ ๋…ธ๋“œ๋Š” ์ƒ์œ„ ๋…ธ๋“œ์˜ ์Šคํƒ€์ผ ์ผ๋ถ€๋ฅผ ์ƒ์†๋ฐ›์Šต๋‹ˆ๋‹ค(ํ•˜ํ–ฅ์‹ ์ข…์†) [3, 7]. ์ดํ›„์— ํŒŒ์‹ฑ๋œ ๊ทœ์น™์ด ์ด์ „ ๊ทœ์น™์„ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ, ๋ธŒ๋ผ์šฐ์ €๋Š” ์ „์ฒด CSS๊ฐ€ ์™„์ „ํžˆ ํŒŒ์‹ฑ๋  ๋•Œ๊นŒ์ง€ CSSOM์„ ๋ Œ๋” ํŠธ๋ฆฌ ๊ตฌ์„ฑ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค [7]. CSSOM ํŠธ๋ฆฌ์—๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ(User Agent) ์Šคํƒ€์ผ์‹œํŠธ ์ •๋ณด๋„ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๊ทœ์น™๋ถ€ํ„ฐ ๊ตฌ์ฒด์ ์ธ ๊ทœ์น™์„ ๊ฑฐ๋“ญ ์ ์šฉํ•˜์—ฌ ์ตœ์ข… ์Šคํƒ€์ผ์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค [8]. - **์„ ํƒ์ž ํŒŒ์‹ฑ ์›๋ฆฌ์™€ ์„ฑ๋Šฅ:** ๋ธŒ๋ผ์šฐ์ €๋Š” CSS ์„ ํƒ์ž๋ฅผ ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ํŒŒ์‹ฑํ•ฉ๋‹ˆ๋‹ค [9]. ๋”ฐ๋ผ์„œ ํด๋ž˜์Šค ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๊ฒฐํ•ฉ๋œ ๊ตฌ์ฒด์ ์ธ ์„ ํƒ์ž(์˜ˆ: `.container.navigation.item`)๋Š” ์กฐ์ƒ ๊ด€๊ณ„๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด DOM ํŠธ๋ฆฌ๋ฅผ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€์•ผ ํ•˜๋ฏ€๋กœ, ๋‹จ์ˆœํ•œ ์„ ํƒ์ž(์˜ˆ: `.item`)์— ๋น„ํ•ด ๋ธŒ๋ผ์šฐ์ €์— ์•ฝ๊ฐ„์˜ ์ž‘์—… ๋ถ€ํ•˜๋ฅผ ๋” ์ค๋‹ˆ๋‹ค [9, 10]. - **๋ Œ๋” ํŠธ๋ฆฌ(Render Tree)์™€์˜ ๊ฒฐํ•ฉ:** ๋ธŒ๋ผ์šฐ์ €๋Š” ํ™”๋ฉด์— ํ‘œ์‹œ๋  ์š”์†Œ์˜ ๋ ˆ์ด์•„์›ƒ์„ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด DOM ํŠธ๋ฆฌ์™€ CSSOM ํŠธ๋ฆฌ๋ฅผ ๋ณ‘ํ•ฉํ•˜์—ฌ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค [6, 11]. DOM ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ์—์„œ ์‹œ์ž‘ํ•ด ๋ˆˆ์— ๋ณด์ด๋Š” ๊ฐ ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ ์ ˆํ•œ CSSOM ๊ทœ์น™์„ ์ฐพ์•„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค [6]. ์ด๋•Œ ํ™”๋ฉด์— ์‹œ๊ฐ์  ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ๋…ธ๋“œ๋‚˜ `display: none` ์Šคํƒ€์ผ์ด ์ ์šฉ๋œ ๋…ธ๋“œ๋Š” ๋ Œ๋” ํŠธ๋ฆฌ์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค [6, 11]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[DOM (Document Object Model)|DOM(Document Object Model]], Render Tree, Critical Rendering Path, [[Reflow & Repaint|Reflow & Repaint]] - **Projects/Contexts:** ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ์ตœ์ ํ™”([[Browser|Browser]] Rendering [[Optimization|Optimization]]) - **Contradictions/Notes:** ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด CSSOM ๊ตฌ์ถ•์€ ์ค‘์š”ํ•œ ๋ Œ๋”๋ง ์ฐจ๋‹จ ๊ณผ์ •์ด์ง€๋งŒ, ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ € ์—”์ง„์—์„œ CSSOM ์ƒ์„ฑ ๋ฐ ์Šคํƒ€์ผ ๊ณ„์‚ฐ ์†๋„๋Š” ๋งˆ์ดํฌ๋กœ์ดˆ ๋‹จ์œ„๋กœ ์ด๋ฃจ์–ด์งˆ ๋งŒํผ ๋งค์šฐ ๋น ๋ฆ…๋‹ˆ๋‹ค [8-10]. ๋”ฐ๋ผ์„œ CSS ์„ ํƒ์ž์˜ ๊ตฌ์ฒด์„ฑ์„ ๋‚ฎ์ถ”๋Š” ๋“ฑ์˜ ๋งˆ์ดํฌ๋กœ ์ตœ์ ํ™”๋ณด๋‹ค๋Š”, ํ•„์š” ์—†๋Š” CSS ๊ทœ์น™์„ ์ตœ์†Œํ™”ํ•˜๊ฑฐ๋‚˜ ๋…ผ๋ธ”๋กœํ‚น(non-blocking) ์š”์ฒญ์„ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์˜๋ฏธ ์žˆ๋Š” ์„ฑ๋Šฅ ๊ฐœ์„  ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ง€์ ํ•ฉ๋‹ˆ๋‹ค [8, 10, 12]. --- *Last updated: 2026-04-25*