Computer >> 컴퓨터 >  >> 프로그래밍 >> CSS

HTML picture 요소로 WebP 이미지와 대체(fallback) 이미지 함께 사용하기

웹사이트에서 수많은 이미지를 표시해야 하는 경우에는 압축 효율이 뛰어난 WebP 형식을 사용하는 것이 좋습니다. WebP는 JPEG나 PNG보다 같은 화질에서 파일 크기를 훨씬 줄일 수 있어, 페이지 로딩 속도 개선과 트래픽 절약에 큰 도움이 됩니다.

다만 일부 브라우저는 WebP를 지원하지 않기 때문에, 이런 브라우저를 위한 대체(fallback) 처리가 필요합니다. 이때 HTML의 <picture> 요소를 활용하면 간단하게 해결할 수 있습니다.

<picture> 요소의 기본 구조

<picture>
   <source srcset="filename.webp" type="image/webp">
   <source srcset="filename.jpg" type="image/jpeg">
   <img src="filename.jpg" alt="대체 이미지">
</picture>

브라우저는 <source> 태그에 나열된 형식 중 자신이 지원하는 첫 번째 이미지를 선택하여 표시합니다. 즉, WebP를 지원하는 최신 브라우저는 .webp 파일을 로드하고, 지원하지 않는 브라우저는 자동으로 .jpg 파일로 대체됩니다. 마지막의 <img> 태그는 <picture> 자체를 인식하지 못하는 매우 오래된 브라우저를 위한 최종 대체 수단 역할을 합니다.

예제 1: 기본적인 WebP 대체 처리

<!DOCTYPE html>
<html>
<head>
<style>
* {
   margin: 2%;
}
</style>
</head>
<body>
<picture>
   <source srcset="sky.webp">
   <img src="sky.jpg" alt="하늘 이미지">
</picture>
</body>
</html>

실행 결과

WebP를 지원하는 브라우저에서는 sky.webp 이미지가, 지원하지 않는 브라우저에서는 sky.jpg 이미지가 화면에 표시됩니다.

예제 2: type 속성을 명시한 대체 처리

<!DOCTYPE html>
<html>
<head>
<style>
* {
   margin: 10px;
}
</style>
</head>
<body>
<picture>
   <source srcset="tree.webp" type="image/webp">
   <source srcset="tree.jpg" type="image/jpeg">
   <img src="tree.jpg" alt="나무 이미지">
</picture>
</body>
</html>

실행 결과

type 속성으로 MIME 타입을 명확히 지정하면, 브라우저가 실제로 파일을 다운로드하기 전에 해당 형식의 지원 여부를 판단할 수 있어 불필요한 네트워크 요청을 줄이고 더욱 효율적으로 동작합니다.

정리

<picture> 요소와 <source> 태그를 조합하면 WebP의 뛰어난 압축 성능을 누리면서도, 다양한 브라우저 환경에서 이미지가 정상적으로 표시되도록 보장할 수 있습니다. 웹 성능 최적화를 위해 WebP 도입을 고려하고 있다면 반드시 함께 적용해야 할 필수 패턴입니다.