πΌοΈ λ μ΄μμ μννΈ(Layout Shift): μ¬μ©μ κ²½νμ μ’μ°νλ μ¨μ μμΈ π¦
λ μ΄μμ μννΈ(Layout Shift)λ μΉ μ±λ₯ μ΅μ νμ μ€μν μ§νλ‘, νμ΄μ§κ° λ‘λλλ λμ μμκ° μκΈ°μΉ μκ² μ΄λνλ νμμ λ§ν©λλ€. μ΄λ° λ³νλ **μ¬μ©μ κ²½ν(UX)**μ λΆμ μ μΈ μν₯μ λ―ΈμΉ μ μμ΅λλ€. μλ₯Ό λ€μ΄, λ²νΌμ΄ κ°μκΈ° μ΄λν΄ μλͺ» ν΄λ¦νκ±°λ, μ½λ λ΄μ©μ΄ κ°μμ€λ μ¬λΌμ§λ μν©μ λ μ¬λ €λ³΄μΈμ. μ΄λ² κΈμμλ λ μ΄μμ μννΈμ μμΈ, μ΄λ₯Ό μ€μ΄λ λ°©λ², κ·Έλ¦¬κ³ μ€μ μ¬λ‘λ₯Ό λ€λ€λ³΄κ² μ΅λλ€.
λ μ΄μμ μννΈλ? π€
**λ μ΄μμ μννΈ(Layout Shift)**λ νμ΄μ§κ° λ λλ§λλ λμ€ μκ°μ μμμ μμΉκ° κ°μμ€λ½κ² λ³νλ νμμ λ§ν©λλ€. μ΄λ νΉν μ½ν μΈ κ° λμ μΌλ‘ λ‘λλκ±°λ, μ΄λ―Έμ§λ κ΄κ³ κ° λ¦κ² λ λλ§λ λ λ°μν©λλ€.
CLS(Cumulative Layout Shift): λ μ΄μμ μννΈλ₯Ό μΈ‘μ νλ μ§ν π
CLSλ Core Web Vitalsμ ν μμλ‘, λ μ΄μμ μννΈκ° μ¬μ©μ κ²½νμ μΌλ§λ μν₯μ λ―ΈμΉλμ§ μΈ‘μ νλ κ°μ λλ€.
CLS κ³μ° λ°©μ
CLSλ λ κ°μ§ μμλ‘ κ³μ°λ©λλ€:
1. μν₯ λΆμ(Impact Fraction): μ΄λν μμκ° νλ©΄μμ μ°¨μ§νλ λΉμ¨.
2. 거리 λΆμ(Distance Fraction): μ΄λν 거리μ λΉμ¨.
CLS = μν₯ λΆμ x 거리 λΆμ
CLS μ μ κΈ°μ€
CLS μ μ μν
0.1 μ΄ν μ’μ
0.1 ~ 0.25 κ°μ νμ
0.25 μ΄μ λμ¨
λ μ΄μμ μννΈμ μμΈ π
1. ν¬κΈ° λ―Έμ§μ μ΄λ―Έμ§ λλ λΉλμ€
• μ΄λ―Έμ§λ λΉλμ€κ° λ‘λλκΈ° μ μ 곡κ°μ μμ½νμ§ μμΌλ©΄, λμ€μ μ½ν μΈ κ° λ°λ €λλ©° μννΈκ° λ°μν©λλ€.
2. λμ μ½ν μΈ μ½μ
• κ΄κ³ , μΆμ² λͺ©λ‘, λΉλκΈ°λ‘ λ‘λλ μμκ° κΈ°μ‘΄ μ½ν μΈ λ₯Ό λ°μ΄λ΄λ κ²½μ°.
3. κΈκΌ΄ λ‘λ© μ§μ°
• μΉν°νΈκ° λ¦κ² λ‘λλκ±°λ ν΄λ°± κΈκΌ΄κ³Όμ ν¬κΈ° μ°¨μ΄λ‘ μΈν΄ ν μ€νΈκ° μ΄λ.
4. CSS μ λλ©μ΄μ
• μ λλ©μ΄μ μ΄ μ λλ‘ μ€κ³λμ§ μμΌλ©΄ μμκ° μλμΉ μκ² μμ§μ.
λ μ΄μμ μννΈ λ°©μ§ λ° μ΅μ ν λ°©λ² π οΈ
1. μ΄λ―Έμ§μ λΉλμ€ ν¬κΈ° λͺ μνκΈ°
HTMLμμ widthμ height μμ±μ μ¬μ©ν΄ μ΄λ―Έμ§ ν¬κΈ°λ₯Ό λͺ μνλ©΄ λΈλΌμ°μ κ° ν΄λΉ 곡κ°μ 미리 μμ½ν©λλ€.
<img src="example.jpg" alt="Example" width="800" height="600">
2. κ΄κ³ λ° λμ μ½ν μΈ κ³΅κ° μμ½
κ΄κ³ λ μΆμ² μ½ν μΈ μ κ³ μ ν¬κΈ°λ₯Ό μ§μ νκ±°λ, μ€μΌλ ν€ UIλ₯Ό μ¬μ©ν΄ 곡κ°μ 미리 ν보νμΈμ.
.ad-slot {
width: 300px;
height: 250px;
background-color: #f0f0f0;
}
3. ν°νΈ λμ€νλ μ΄ μμ± νμ©
μΉν°νΈ λ‘λ© μ§μ°μ λ°©μ§νλ €λ©΄ font-display μμ±μ μ¬μ©νμΈμ.
@font-face {
font-family: 'CustomFont';
src: url('custom-font.woff2') format('woff2');
font-display: swap; /* ν΄λ°± κΈκΌ΄ μ¬μ© */
}
4. CSS μ λλ©μ΄μ μ΅μ ν
μ λλ©μ΄μ μ transformκ³Ό opacityλ₯Ό νμ©ν΄ GPU κ°μμ μ¬μ©νλ λ°©μμΌλ‘ μ΅μ ννμΈμ.
.box {
transition: transform 0.3s ease-out;
}
μ€μ λ‘ CLS μ€μ΄κΈ°: μ¬λ‘ π‘
Before
<!-- μ΄λ―Έμ§ ν¬κΈ° λ―Έμ§μ -->
<img src="banner.jpg" alt="Banner">
• μ΄λ―Έμ§λ₯Ό λ‘λνλ λμ ν μ€νΈκ° μλλ‘ λ°λ¦Ό.
After
<!-- ν¬κΈ° μ§μ μΌλ‘ μμ μ μΈ λ‘λ© -->
<img src="banner.jpg" alt="Banner" width="1200" height="400">
• ν¬κΈ°λ₯Ό λͺ μν΄ ν μ€νΈκ° μ΄λνμ§ μμ.
λ μ΄μμ μννΈ λλ²κΉ : κ°λ°μ λꡬ νμ© π οΈ
Chrome DevToolsλ‘ CLS λΆμνκΈ°
1. DevTools μ΄κΈ°: F12 λλ Ctrl + Shift + I.
2. Lighthouse νμμ Performance Audit μ€ν.
3. CLS μ μ νμΈ λ° λ¬Έμ μμ μλ³.
μ CLSλ₯Ό μ€μ¬μΌ ν κΉ? π
1. μ¬μ©μ κ²½ν κ°μ
• κ°μμ€λ¬μ΄ μ΄λμ μ¬μ©μμ νΌλκ³Ό λΆνΈμ μ΄λν©λλ€.
2. SEO ν₯μ
• CLSλ Core Web Vitalsμ μ£Όμ μ§νλ‘, Google κ²μ μμμ μ§μ μ μΈ μν₯μ λ―ΈμΉ©λλ€.
3. μ νμ¨ μ¦κ°
• μμ μ μΈ λ μ΄μμμ μ¬μ©μμ μ λ’°λ₯Ό μ»κ³ , μ νμ¨μ λμ΄λ λ° κΈ°μ¬ν©λλ€.
λ§λ¬΄λ¦¬νλ©°: λ μ΄μμ μμ μ±μ΄ λ§λλ λ λμ μΉ π
λ μ΄μμ μννΈλ μμ λ³νμ²λΌ 보μ΄μ§λ§, μ¬μ©μ κ²½νκ³Ό μ¬μ΄νΈ μ±λ₯μ ν° μν₯μ λ―ΈμΉ©λλ€. μμμ λ€λ£¬ λ°©λ²μ μ μ©ν΄ μ¬λ¬λΆμ μΉμ¬μ΄νΈλ₯Ό λ μμ μ μ΄κ³ μ λ’°ν μ μλ νκ²½μΌλ‘ κ°μ ν΄ λ³΄μΈμ!
π·μ μ€μ κ°λ°μκ° λμ΄λ΄ μλΉ!π·