HTML에 img 요소로 이미지 표시하기 2020년 버전
기본형
<img src="sample.jpg" alt="画像">
기본형은 매우 간단하네요.
반응형 이미지 1: srcset 속성
<img src="sample.jpg"
srcset="[email protected] 2x, [email protected] 3x"
alt="画像">
srcset
속성을 사용하면 Retina 디스플레이/고해상도 디스플레이에 해당하는 이미지를 넣을 수 있습니다.참고
반응형 이미지 2: sizes 속성
<img srcset="sample-320w.jpg 320w,
sample-480w.jpg 480w,
sample-800w.jpg 800w"
sizes="(max-width: 320px) 280px,
(max-width: 480px) 440px,
800px"
src="sample-800w.jpg"
alt="画像">
sizes
속성을 사용하면 다양한 디스플레이 크기를 지원할 수 있습니다.참고
반응형 이미지 3: 아트 디렉션(이미지 전환)
<picture>
<source media="(max-width: 799px)"
srcset="sample-480w-sp.jpg">
<source media="(min-width: 800px)"
srcset="sample-800w.jpg">
<img src="sample-800w.jpg"
alt="画像">
</picture>
picture
요소와 source
요소를 조합하면 디스플레이 크기 등 조건별로 완전히 다른 이미지를 분리할 수도 있다.참고
반응형 이미지 4: webp 사용
<picture>
<source type="image/webp"
srcset="sample.webp">
<img src="sample.png"
alt="画像">
</picture>
webp는 Google이 개발한 이미지 형식으로, jpeg 등 종래형 이미지 형식보다 경량이기 때문에 web 퍼포먼스면에서 유리하게 된다. 전술의 아트 디렉션과 같은 방법으로 표시 전환 가능. IE와 Safari는 현재 webp 비대응.
참고
반응형 이미지 5: 화면 크기 및 해상도별 분배와 webp/png 분배를 율의적으로 가본다
<picture>
<source type="image/webp"
media="(min-width: 1200px)"
srcset="sample-lg.webp 1x, [email protected] 2x">
<source type="image/webp"
media="(max-width: 1199px)"
srcset="sample-md.webp 1x, [email protected] 2x">
<source type="image/webp"
media="(max-width: 380px)"
srcset="sample-sm.webp 1x, [email protected] 2x">
<source type="image/png"
media="(min-width: 1200px)"
srcset="sample-lg.png 1x, [email protected] 2x">
<source type="image/png"
media="(max-width: 1199px)"
srcset="sample-md.png 1x, [email protected] 2x">
<source type="image/png"
media="(max-width: 380px)"
srcset="sample-sm.png 1x, [email protected] 2x">
<img src="sample.png"
alt="画像">
</picture>
이미지 한 장을 표시하기 위해 HTML 설명이 놀라울수록 증가합니다
서버 측에서 webp 분배 설정을하는 방법
전항과 같이 HTML의 기술량이 증가하는 것을 방지하기 위해서, 서버측의 설정 변경으로 대응하는 방법이 있습니다. Apache/.htaccess를 사용하는 방법과 Nginx를 사용하는 방법에 대해서는 아래가 매우 도움이 되었습니다.
참고
decoding 속성
<img src="sample.jpg"
decoding="async"
alt="画像">
decoding="async"
지정된 경우 이미지는 비동기 적으로 디코딩됩니다. HTML Living Standard 표준화 사양으로, IE 이외의 주요 브라우저로 사용 가능.화상의 디코딩(디코딩)을 비동기화함으로써, 표시 시간이 단축된다.
참고
loading 속성
<img src="sample.jpg"
loading="lazy"
width="640"
height="360"
alt="画像">
loading="lazy"
지정된 이미지 지연을 읽을 수 있습니다. width
/height
속성을 써 주지 않으면 동작하지 않는다. 참고
decoding="async"와 loading="lazy"를 모두 작성하면 어떻게 됩니까?
<img src="sample.jpg"
decoding="async"
loading="lazy"
width="640"
height="360"
alt="画像">
decoding="async"
와 loading="lazy"
는 병기해도 양립하지 않는다. 둘 다 쓰면 loading="lazy"
가 우선합니다.loading="lazy"
가 지정되어 있어도 페이지를 읽을 때 뷰포트의 이미지는 지연없이로드됩니다. loading="lazy"
, 그렇지 않으면 decoding="async"
라고 하는 상태에 케이스에 의해 구분하는 것이 좋지 않은가 (자신 없음) 참고
【중요】width/height 속성의 사양 변경
<img
src="sample.jpg"
width="640"
height="360"
alt="画像">
2019년 10월에 WHATWG가 표준화.
width
/height
속성을 기술하는 것으로 layout Shift(이미지 로드시의 표시의 흔들림)가 일어나지 않게 된다. 종래 width
/height
속성은 픽셀 단위의 사이즈이었지만, 사양 변경에 의해 동시에 애스펙트비를 나타낼 수 있게 되었다.layout Shift(이미지 로드시 표시의 흔들림)
실제의 움직임은 이쪽을 참조.
Optimize Cumulative Layout Shift - web.dev
Layout Shift는 Lighthouse v6보다 새로운 지표 CLS로서 퍼포먼스 계측 대상이 되고 있다.
참고
모두를 위해 최적화 해보십시오.
반응형 이미지 + webp 대응 + 비동기 복호화 + Layout Shift 대책 모두에서 이미지를 최적화한 코드는 다음과 같습니다.
<picture>
<source type="image/webp"
srcset="full_optimized.webp 1x, [email protected] 2x, [email protected] 3x">
<img src="full_optimized.png"
srcset="[email protected] 2x, [email protected] 3x"
decoding="async"
width="640"
height="360"
alt="画像">
</picture>
Reference
이 문제에 관하여(HTML에 img 요소로 이미지 표시하기 2020년 버전), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hibikikudo/items/853aafe32ad7900712c8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)