Post

Layout Shift에 대해

Layout Shift 발생 원인과 해결법

Layout Shift란?


렌더링 중인 웹 페이지에서 요소들이 예상치 않게 움직이는 현상을 의미한다.
사용자가 페이지를 로드하는 동안에도 발생할 수 있으며, 이는 사용자 경험에 부정적인 영향을 미칠 수 있다.

Layout Shift 발생 원인


요소 렌더링 지연

이미지나 스크립트 로딩 지연으로 인해 발생할 수 있다.

동적 콘텐츠 추가

JS를 통해 동적으로 콘텐츠를 추가할 때, 초기 렌더링 시에 위치를 예측할 수 없어 발생할 수 있다.

폰트 로딩

폰트가 로드될 때까지 기본 폰트가 사용되다가 폰트가 변경되면서 발생할 수 있다.

예시코드


Layout Shift가 발생하는 상황을 예시코드로 살펴보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import React, { useState, useEffect } from 'react';

const App = () => {
  const [width, setWidth] = useState('100px');

  useEffect(() => {
    setTimeout(() => {
      setWidth('200px'); // 2초 후에 너비를 변경하여 Layout Shift 발생
    }, 2000);
  }, []);

  return (
    <div className="box" style=>
      Box
    </div>
  );
}

export default App;

Layout Shift 해결 방법


이미지 크기 지정

이미지의 크기를 사전에 정의하여 공간을 확보한다.

CSS 애니메이션 사용

CSS 트랜지션 또는 애니메이션을 활용하여 요소의 크기나 위치 변경 시 부드럽게 처리한다.

레이아웃 사이즈 계산

요소가 동적으로 추가될 때, 사전에 레이아웃 사이즈를 계산하여 예상치 않은 이동을 방지한다.

결론


Layout Shift는 사용자 경험에 부정적인 영향을 미칠 수 있는 문제이다.
위 방법들을 활용하여 Layout Shift를 최소화하고, 사용자가 예상치 못한 레이아웃 변화를
경험하는 불편함을 최소화한다.

React에서도 성능 최적화와 UX 개선을 위해 Layout Shift를 주의 깊게 관리하고
사용자가 페이지를 부드럽게 경험할 수 있도록 하자.

This post is licensed under CC BY 4.0 by the author.