<star />

λΈŒλΌμš°μ € λ Œλ”λ§ κ³Όμ • λ³Έλ¬Έ

Computer Science 🎯

λΈŒλΌμš°μ € λ Œλ”λ§ κ³Όμ •

별깅 2022. 12. 12. 22:05
728x90

λ Œλ”λ§μ΄λž€ HTML,CSS, μžλ°”μŠ€ν¬λ¦½νŠΈ λ“± κ°œλ°œμžκ°€ μž‘μ„±ν•œ λ¬Έμ„œκ°€ λΈŒλΌμš°μ €μ—μ„œ 좜λ ₯λ˜λŠ” 과정을 λ§ν•œλ‹€.

λΈŒλΌμš°μ €λŠ” λ Œλ”λ§μ„ μˆ˜ν–‰ν•˜λŠ” λ Œλ”λ§ 엔진을 κ°€μ§€κ³  μžˆλ‹€.

크둬은 블링크(Blink), μ‚¬νŒŒλ¦¬λŠ” μ›Ήν‚·(Webkit), νŒŒμ΄μ–΄ν­μŠ€λŠ” κ²Œμ½”(Gecko)λΌλŠ” λ Œλ”λ§ 엔진을 μ‚¬μš©ν•¨.

 

 

1️⃣ μ‚¬μš©μžκ°€ λΈŒλΌμš°μ €λ₯Ό 톡해 웹에 μ ‘μ†ν•˜λ©΄, μ„œλ²„λ‘œλΆ€ν„° HTML, CSS λ“± 웹에 ν•„μš”ν•œ λ¦¬μ†ŒμŠ€λ₯Ό λ‹€μš΄λ‘œλ“œ λ°›λŠ”λ‹€.

λΈŒλΌμš°μ €κ°€ νŽ˜μ΄μ§€λ₯Ό λ Œλ”λ§ ν•˜λ €λ©΄ HTML, CSS νŒŒμΌμ„ Object Model 둜 λ§Œλ“€μ–΄μ•Ό ν•œλ‹€. πŸ‘‰πŸ»

HTML 은 DOM(Document Object Model) Tree , CSS λŠ” CSSOM(CSS Object Model) Tree

 

 

2️⃣ Rendering Tree 생성

DOM Tree와 CSSOM Treeκ°€ λ§Œλ“€μ–΄μ‘ŒμœΌλ©΄ κ·Έ λ‹€μŒμœΌλ‘œλŠ” 이 λ‘˜μ„ 합쳐 Rendering Treeλ₯Ό μƒμ„±ν•œλ‹€.

λ Œλ”λ§ νŠΈλ¦¬μ—λŠ” νŽ˜μ΄μ§€λ₯Ό λ Œλ”λ§ ν•˜λŠ”λ° ν•„μš”ν•œ λ…Έλ“œλ§Œ ν¬ν•¨λ©λ‹ˆλ‹€.

 


3️⃣ Layout 단계

λΈŒλΌμš°μ €μ˜ 뷰포트(Viewport) λ‚΄μ—μ„œ 각 μš”μ†Œμ˜ μ •ν™•ν•œ μœ„μΉ˜μ™€ 크기λ₯Ό κ³„μ‚°ν•˜λŠ” Box λͺ¨λΈμ΄ 좜λ ₯λœλ‹€.

λͺ¨λ“  μƒλŒ€μ μΈ μΈ‘μ •κ°’ (%, vh, vw) 은 μ‹€μ œ ν™”λ©΄μ—μ„œ μ ˆλŒ€μ μΈ ν”½μ…€ λ‹¨μœ„λ‘œ λ³€ν™˜λœλ‹€.

 

 

4️⃣ Painting 단계

λ§ˆμ§€λ§‰μœΌλ‘œ λ Œλ”λ§ 트리의 각 λ…Έλ“œλ₯Ό ν™”λ©΄μ˜ μ‹€μ œ ν”½μ…€λ‘œ λ³€ν™˜ν•˜κ²Œ λœλ‹€.

λ ˆμ΄μ•„μ›ƒ λ‹¨κ³„μ—μ„œ λͺ¨λ“  계산이 μ™„λ£Œλ˜λ©΄, 화면에 μš”μ†Œλ“€μ„ 그리게 λœλ‹€.

이 단계λ₯Ό “νŽ˜μΈνŒ…” λ˜λŠ” “λž˜μŠ€ν„°ν™””라고 ν•œλ‹€.

μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ” μŠ€νƒ€μΌμ΄ λ³΅μž‘ν• μˆ˜λ‘ painting 단계에 μ†Œμš”λ˜λŠ” μ‹œκ°„μ΄ κΈΈλ‹€.

 

 

🀷🏻‍♂️ λ¦¬ν”Œλ‘œμš°(Reflow) 와 리페인트(Repaint) 🀷🏻‍♀️

 

1) λ¦¬ν”Œλ‘œμš°(Reflow)

- μ‚¬μš©μžκ°€ 웹에 처음 μ ‘μ†ν•˜λ©΄, λ Œλ”λ§ 과정을 거쳐 화면에 λͺ¨λ“  μš”μ†Œκ°€ κ·Έλ €μ§€κ²Œ λœλ‹€.

이후에 μ‚¬μš©μžμ— μ˜ν•œ λ‹€μ–‘ν•œ μ•‘μ…˜κ³Ό 이벀트둜 μΈν•΄μ„œ μƒˆλ‘œμš΄ HTML, μŠ€νƒ€μΌ μš”μ†Œκ°€ μΆ”κ°€, λ³€κ²½λœλ‹€.

영ν–₯을 λ°›κ²Œλ˜λŠ” λͺ¨λ“  λ…Έλ“œμ— λŒ€ν•΄μ„œ λ Œλ”λ§ 트리 생성과 λ ˆμ΄μ•„μ›ƒ 과정을 μž¬μˆ˜ν–‰ν•˜κ²Œ λœλ‹€.

 

> λ¦¬ν”Œλ‘œμš°(Reflow) κ°€ μΌμ–΄λ‚˜λŠ” λŒ€ν‘œμ μΈ 속성듀 <

- position, width, height, margin, padding, border, border-width, font-size, font-weight, line-height, text-align, overflow

 

2) 리페인트(Repaint)

- λ¦¬ν”Œλ‘œμš° 과정이 μˆ˜ν–‰λœ κ²°κ³Όλ₯Ό 화면에 그리기 μœ„ν•΄μ„  νŽ˜μΈνŒ… 단계λ₯Ό μž¬μˆ˜ν–‰ν•΄μ•Ό ν•œλ‹€.

κΈ°μ‘΄ μš”μ†Œμ— λ³€κ²½ 사항이 생겼닀고 ν•΄μ„œ 항상 λ¦¬ν”Œλ‘œμš°(Reflow)-리페인트(Repaint)κ°€ μΌμ–΄λ‚˜λŠ” 것은 μ•„λ‹ˆκ³ ,

λ‹¨μˆœν•œ 색상 변경은 λ¦¬ν”Œλ‘œμš°(Reflow) μˆ˜ν–‰ 없이 λ°”λ‘œ 리페인트(Repaint)만 μˆ˜ν–‰ν•œλ‹€.

λ¦¬ν”Œλ‘œμš°(Reflow)κ°€ μΌμ–΄λ‚˜λ©΄ λ°˜λ“œμ‹œ 리페인트(Repaint)κ°€ μΌμ–΄λ‚œλ‹€.

 

> 리페인트(Repaint) 만 μΌμ–΄λ‚˜λŠ” λŒ€ν‘œμ μΈ 속성듀 <

- background, color, text-decoration, border-style, border-radius

 

λ¦¬ν”Œλ‘œμš°(Reflow), 리페인트(Repaint) κ°€ μΌμ–΄λ‚˜μ§€ μ•ŠλŠ” transform, opacitiy 와 같은 속성도 μžˆμŠ΅λ‹ˆλ‹€.

left, right, width, height 보닀 <<<<<<< transform >>>>>>>>을

visibility/display 보닀 <<<<<< opacitiy >>>>>>>> λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ„±λŠ₯ κ°œμ„ μ— λ„μ›€λœλ‹€.

728x90
Comments