Front-end/UX

πŸ–ΌοΈ λ ˆμ΄μ•„μ›ƒ μ‹œν”„νŠΈ(Layout Shift): μ‚¬μš©μž κ²½ν—˜μ„ μ’Œμš°ν•˜λŠ” μˆ¨μ€ μš”μΈ 🚦

xeunnie 2025. 3. 3. 01:00
728x90
λ°˜μ‘ν˜•

πŸ–ΌοΈ λ ˆμ΄μ•„μ›ƒ μ‹œν”„νŠΈ(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. μ „ν™˜μœ¨ 증가

 μ•ˆμ •적인 λ ˆμ΄μ•„μ›ƒμ€ μ‚¬μš©μžμ˜ μ‹ λ’°λ₯Ό μ–»κ³ , μ „ν™˜μœ¨μ„ λ†’μ΄λŠ” 데 κΈ°μ—¬ν•©λ‹ˆλ‹€.

 

λ§ˆλ¬΄λ¦¬ν•˜λ©°: λ ˆμ΄μ•„μ›ƒ μ•ˆμ •μ„±μ΄ λ§Œλ“œλŠ” 더 λ‚˜μ€ μ›Ή 🌐

 

λ ˆμ΄μ•„μ›ƒ μ‹œν”„νŠΈλŠ” μž‘μ€ λ³€ν™”μ²˜λŸΌ λ³΄μ΄μ§€λ§Œ, μ‚¬μš©μž κ²½ν—˜κ³Ό μ‚¬μ΄νŠΈ μ„±λŠ₯에 큰 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€. μœ„μ—μ„œ 닀룬 방법을 μ μš©ν•΄ μ—¬λŸ¬λΆ„μ˜ μ›Ήμ‚¬μ΄νŠΈλ₯Ό 더 μ•ˆμ •μ μ΄κ³  μ‹ λ’°ν•  수 μžˆλŠ” ν™˜κ²½μœΌλ‘œ κ°œμ„ ν•΄ λ³΄μ„Έμš”!

 

πŸŒ·μ „μ„€μ˜ κ°œλ°œμžκ°€ λ˜μ–΄λ΄…μ‹œλ‹Ή!🌷

728x90
λ°˜μ‘ν˜•