
Reflowμ Repaintμ κ°λ
μ λ€λ£¨κΈ° μ΄μ μ λ¨Όμ λΈλΌμ°μ μλ κ³Όμ μ κ°λ΅νκ² μ΄ν΄λ³΄μ
1) HTMLμ νμ±νμ¬ DOM νΈλ¦¬ μμ±
2) CSSλ₯Ό νμ±νμ¬ CSSOM νΈλ¦¬ μμ±
3) JavaScriptλ₯Ό νμ±νμ¬ AST μμ±
4) λ λ νΈλ¦¬ μμ±
5) λ μ΄μμ μ§ν
6) νμΈνΈ μ§ν
μμΈν λΈλΌμ°μ λ λλ§ κ³Όμ
μ κ³Όμ μ΄νμ νλ©΄μ μμ λλ©΄ νλ©΄μ λ€μ κ·Έλ¦¬κ² λλλ° μ΄λ μ΄ κ³Όμ μ Reflowμ RepaintλΌκ³ νλ€.
Reflow λ§ κ·Έλλ‘ νλ‘μ°λ₯Ό λ€μ μ νλ€λ λ»μ΄λ€.
μμμ λλΉ, λμ΄, μμΉ λ±μ΄ λ³κ²½λμμ λ λ λ νΈλ¦¬λ₯Ό μ¬μ±μ±νκ³ μ΄λ Reflowκ° λ°μνλ€κ³ νλ€.
μμμ μμΉ, ν¬κΈ° λ³κ²½
ν°νΈ λ³κ²½, ν μ€νΈ λ΄μ© λ³κ²½
JavaScirptλ₯Ό ν΅ν DOM λμ λ³ν
μλμ° λ¦¬μ¬μ΄μ§ λ°μ(Global Layout μν₯)
Repaint λ§ κ·Έλλ‘ λ€μ κ·Έλ¦°λ€λ λ»μ΄λ€.
μμ μμμ΄ λ³κ²½ λμμ λ
Reflowκ° λ°μνμ λ
Visibilityκ° hiddenμμ visibleλ‘ λ°λμμ λ
π₯ νλ©΄μ κ΅¬μ‘°κ° λ³κ²½λμ§ μλ κ²½μ° Repaintλ§ λ°μνλ€!
Reflowκ° λ°μνλ©΄ ν΄λΉ μμμ μ£Όλ³ λΆλͺ¨, μμ, νμ λ
ΈλκΉμ§ μν₯μ μ£Όμ΄ λΉμ©μ΄ ν° μμ
μ΄λ€.
Repaint μμ DOM APIλ₯Ό μ‘°μ νλ©΄ μμ λ
ΈλκΉμ§ λͺ¨λ κ²μνκΈ° λλ¬Έμ μ±λ₯ μ νλ₯Ό λ°μμν¬ μ μλ€.
β κ·Έλ κΈ°μ Reflowμ Repaintλ₯Ό μ΅μν νλ κ²μ΄ μ€μνλ€!
1) in-line μ€νμΌ μ¬μ©νμ§ μλλ€.
2) μ€νμΌ λ³κ²½μ΄ μμ λ CSS νμ ν΄λμ€λ₯Ό λ³κ²½νλ€.
3) DOM μ¬μ©μ μ΅μννλ€.
4) μ λλ§€μ΄μ μ΄ μλ λ Έλμ positionμ absolute λλ fixedλ‘ μ€μ νλ€.
5) CSS ννμμ μ¬μ©νμ§ μλλ€.
{ display: none } : νλ©΄μ 보μ΄μ§λ μκ³ λ μ΄μμμ μ°¨μ§νμ§ μμ, ν μνμμλ Reflowκ° λ°μνμ§ μλλ€. λ¨ hidden β block λλ inline λ±μΌλ‘ λ°λκ² λλ©΄ Reflow, Repaint λ°μ
{ visibility: hidden } : νλ©΄μ 보μ΄μ§λ§ μμ λΏ λ μ΄μμμ μ°¨μ§ν¨, λ¨ hidden β visibleμ΄ λλ©΄ Repaintλ§ λ°μ
π‘ νλ©΄μμ μ κ±°νλ λ°©λ²μ μ ννλ κ²μ { display: none }μ΄ λ μ΄μμμ μ°¨μ§νμ§ μμ μ±λ₯μ μΌλ‘λ { visibility: hidden }λ³΄λ€ λ°μ΄λ μ μλ€.
νμ§λ§ λ€μ 보μ΄λ κ³Όμ μμλ displayμ κ²½μ° Reflowμ Repaintλ₯Ό λ°μμν¨λ€.
λ°λ©΄μ visibilityμ κ²½μ° Repaintλ§ λ°μνκΈ° λλ¬Έμ κ°κ°μ νΉμ§κ³Ό λμ λ°©μμ κ³ λ €ν΄μ μ¬μ©ν΄μΌ λλ€.