๐Ÿ—’๏ธHTML | ๋ฐ˜์‘ํ˜• ์ด๋ฏธ์ง€ - srcset, sizes, <picture>

์›์˜ยท2023๋…„ 3์›” 28์ผ
1

์ƒˆ๋กœ์šด ์ง€์‹๐Ÿ’ก

๋ชฉ๋ก ๋ณด๊ธฐ
1/15
post-thumbnail

๐Ÿ”Ž๋ฐ˜์‘ํ˜• ์ด๋ฏธ์ง€

  • ํ•ด์ƒ๋„, ์Šคํฌ๋ฆฐ ํฌ๊ธฐ ๋“ฑ์ด ๋‹ค๋ฅธ ์ˆ˜๋งŽ์€ ๊ธฐ๊ธฐ๋“ค์—์„œ ์ •์ƒ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ์ด๋ฏธ์ง€

๐Ÿ’กsrcset

  • ๊ธฐ๊ธฐ์— ๋”ฐ๋ผ ํฌ๊ธฐ๋งŒ ๋‹ค๋ฅธ ๋™์ผํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ
  • ๋‹ค์–‘ํ•œ ํ•ด์ƒ๋„์˜ ์ด๋ฏธ์ง€๋ฅผ ์ค€๋น„ํ•ด๋‘๊ณ , ์ด๋“ค ์ค‘ ๊ธฐ๊ธฐ์˜ ํ•ด์ƒ๋„์— ๋Œ€์‘ํ•œ ์ตœ์ƒ์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„ ํƒํ•˜์—ฌ ๋กœ๋”ฉ


x ์„œ์ˆ ์ž

  • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ธฐ๊ธฐ์˜ ํ™”์†Œ ๋ฐ€๋„๋ฅผ ํ™•์ธํ•˜๊ณ  srcset์— ์žˆ๋Š” ๊ฒƒ๋“ค ์ค‘ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์ด๋ฏธ์ง€ ์‚ฌ์šฉ
    -ํ™”์†Œ ๋ฐ€๋„๋ž€?
    ๋™์ผํ•œ ๋ฉด์  ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ํ™”์†Œ ์ˆ˜๋กœ, ๊ฐ’์ด ๋†’์„ ์ˆ˜๋ก ๋” ๋†’์€ ํ•ด์ƒ๋„์˜ ๊ธฐ๊ธฐ
    ์ฝ˜์†”์ฐฝ์— window.devicePixelRatio ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ํ™”๋ฉด์˜ ํ™”์†Œ ๋ฐ€๋„ ์•Œ ์ˆ˜ ์žˆ์Œ

srcset = "์ด๋ฏธ์ง€ํŒŒ์ผ๋ช… ํ™”์†Œ๋ฐ€๋„[x]"

์˜ˆ์‹œ

<img srcset="img/rabbit_300.png 2x, img/rabbit_500.png 3x"
     src="img/rabbit_150.png" 
     alt="ํ† ๋ผ">
  • ๊ธฐ๊ธฐ์˜ ํ™”์†Œ ๋ฐ€๋„๊ฐ€ 1์ธ ๊ฒฝ์šฐ
    ๊ธฐ๋ณธ์œผ๋กœ ์ง€์ •๋œ rabbit_150.png๊ฐ€ ์„ ํƒ๋จ

  • ๊ธฐ๊ธฐ์˜ ํ™”์†Œ ๋ฐ€๋„๊ฐ€ 2์ธ ๊ฒฝ์šฐ
    srcset์— 2x๋กœ ์ง€์ •๋œ rabbit_300.png๊ฐ€ ์„ ํƒ๋จ

  • ๊ธฐ๊ธฐ์˜ ํ™”์†Œ ๋ฐ€๋„๊ฐ€ 3 ์ด์ƒ์ธ ๊ฒฝ์šฐ
    srcset์— 3x๋กœ ์ง€์ •๋œ rabbit_500.png๊ฐ€ ์„ ํƒ๋จ


w ์„œ์ˆ ์ž

  • ์›๋ณธ ์ด๋ฏธ์ง€์˜ ๋„“์ด๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์•Œ๋ ค์ฃผ๋ฉด ํ˜„์žฌ ๊ธฐ๊ธฐ์— ๊ฐ€์žฅ ์ ์ ˆํ•œ ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•จ
  • w ์„œ์ˆ ์ž๊ฐ€ ์ ์šฉ๋˜๋ฉด ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ทฐํฌํŠธ์˜ 100% ์ฐจ์ง€ํ•˜๋ ค๊ณ  ํ•จ
  • x ์„œ์ˆ ์ž์™€ ๋™์‹œ์— ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ

    srcset = "์ด๋ฏธ์ง€ํŒŒ์ผ๋ช… ์›๋ณธ์ด๋ฏธ์ง€์˜๋„“์ด[w]"

์˜ˆ์‹œ

<img srcset="img/rabbit_500.png 500w, img/rabbit_300.png 300w"
     src="images/rabbit_150.png" 
     alt="ํ† ๋ผ">
  • ๋ทฐํฌํŠธ ์ž‘์€ ๊ฒฝ์šฐ rabbit_300.png ์„ ํƒ๋จ
  • ๋ทฐํฌํŠธ ํฐ ๊ฒฝ์šฐ rabbit_500.png ์„ ํƒ๋จ


sizes

  • ๋ฏธ๋””์–ด ์กฐ๊ฑด๋ฌธ์„ ์ •์˜ํ•˜๊ณ  ์กฐ๊ฑด์ด ์ฐธ์ผ ๋•Œ ์–ด๋–ค ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ ์ตœ์ ์ธ์ง€ ๋‚˜ํƒ€๋ƒ„
  • ๋ทฐํฌํŠธ์˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ด๋ฏธ์ง€๊ฐ€ UI ์•ˆ์—์„œ ์ฐจ์ง€ํ•˜๊ฒŒ ๋  ์‚ฌ์ด์ฆˆ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์•Œ๋ ค์ฃผ๋ฉด ๊ฐ€์žฅ ๋น„์Šทํ•œ ์‚ฌ์ด์ฆˆ์˜ ์ด๋ฏธ์ง€ ์„ ํƒ
  • w์„œ์ˆ ์ž์— ๋”ํ•ด ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋” ๋งŽ์€ ํžŒํŠธ๋ฅผ ์ค€๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ

srcset = "์ด๋ฏธ์ง€ํŒŒ์ผ๋ช… ๊ณ ์œ ํ”ฝ์…€๋„ˆ๋น„[w]"
sizes = "(๋ฏธ๋””์–ด ์กฐ๊ฑด๋ฌธ) ์กฐ๊ฑด๋ฌธ์ด์ฐธ์ผ๊ฒฝ์šฐ ์ด๋ฏธ์ง€๊ฐ€ ์ฑ„์šธ ๋„ˆ๋น„"

๋ธŒ๋ผ์šฐ์ €์˜ ๋ถˆ๋Ÿฌ์˜ฌ ์ด๋ฏธ์ง€ ํŒ๋‹จ ๊ณผ์ •

  1. ๊ธฐ๊ธฐ์˜ ๋ทฐํฌํŠธ ๋„ˆ๋น„๋ฅผ ํ™•์ธ
  2. sizes์—์„œ ์ฐธ์ด๋˜๋Š” ๋ฏธ๋””์–ด ์กฐ๊ฑด๋ฌธ์„ ํ™•์ธํ•˜๊ณ  ํ•ด๋‹น ์กฐ๊ฑด์—์„œ์˜ ์ด๋ฏธ์ง€๊ฐ€ ์ฑ„์šธ ํฌ๊ธฐ ํ™•์ธ
  3. ์ด๋ฏธ์ง€๊ฐ€ ์ฑ„์šธ ํฌ๊ธฐ์™€ ๊ฐ€์žฅ ๊ทผ์ ‘ํ•˜๋Š” srcset์— ์—ฐ๊ฒฐ๋œ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ด

์˜ˆ์‹œ

<img 
     srcset="img/rabbit_500.png 500w, img/rabbit_300.png 300w, img/rabbit_150.png 150w" 
     sizes="(min-width:960px) 550px, (min-width:620px) 150px, 300px" 
     src="images/rabbit_150.png" 
     alt="ํ† ๋ผ">
  • ๋ทฐํฌํŠธ 960px ์ด์ƒ์ธ ๊ฒฝ์šฐ
    (min-width:960px) ์กฐ๊ฑด๋ฌธ์ด ์ฐธ,
    550px๊ณผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด 500w์˜ ๊ณ ์œ ํ”ฝ์…€๋„ˆ๋น„๋ฅผ ๊ฐ€์ง„ rabbit_500.png ์„ ํƒ

  • ๋ทฐํฌํŠธ 620px ์ด์ƒ์ธ ๊ฒฝ์šฐ
    (min-width:620px) ์กฐ๊ฑด๋ฌธ์ด ์ฐธ,
    150px๊ณผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด 150w์˜ ๊ณ ์œ ํ”ฝ์…€๋„ˆ๋น„๋ฅผ ๊ฐ€์ง„ rabbit_150.png๊ฐ€ ์„ ํƒ

  • ๋ทฐํฌํŠธ 620px ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ
    ๋ชจ๋“  ์กฐ๊ฑด๋ฌธ์— ํ•ด๋‹นํ•˜์ง€ ์•Š์•„ ๋งˆ์ง€๋ง‰ ๊ธฐ๋ณธ๊ฐ’ ๊ฐ€์ง,
    300px๊ณผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด 300w์˜ ๊ณ ์œ ํ”ฝ์…€๋„ˆ๋น„๋ฅผ ๊ฐ€์ง„ rabbit_300.png๊ฐ€ ์„ ํƒ


x ์„œ์ˆ ์ž, w ์„œ์ˆ ์ž, sizes๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ srcset ์ง€์› ์•ˆ๋˜๋Š” ๋ธŒ๋ผ์šฐ์ €์— ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•ด src ์†์„ฑ์„ ์ฃผ๋Š” ๊ฒƒ์€ ํ•„์ˆ˜!!




๐Ÿ’ก<picture>

  • ๊ธฐ๊ธฐ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๋‹ค๋ฅธ ์ด๋ฏธ์ง€๋“ค ์ค‘ ์กฐ๊ฑด์— ๋งž๋Š” ์ด๋ฏธ์ง€๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ
  • srcset ์†์„ฑ์€ ๊ฐ™์€ ์ด๋ฏธ์ง€๋“ค ์ค‘ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๊ฒƒ์„ ์„ ํƒํ–ˆ๋‹ค๋ฉด, <picture>์€ <source>๋ฅผ ์‚ฌ์šฉํ•ด ๋‹ค๋ฅธ ์ด๋ฏธ์ง€๋“ค ์ค‘ ์ ์ ˆํ•œ ๊ฒƒ ์„ ํƒ



source - media ์†์„ฑ

  • media ์†์„ฑ ์•ˆ์˜ ์กฐ๊ฑด์ด ๋งž์„ ๋•Œ, ๊ฐ™์€ <source> ์•ˆ์˜ srcset ์†์„ฑ ๊ฐ’์„ <img>์˜ src์†์„ฑ์— ๋„ฃ์–ด ํ™”๋ฉด์— ๋‚˜ํƒ€๋ƒ„
  • ๋งŒ์•ฝ <img> ์š”์†Œ๊ฐ€ ์—†๋‹ค๋ฉด ์ด๋ฏธ์ง€ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Œ

์˜ˆ์‹œ

<picture>
    <source srcset="img/dog_1.jpg" media="(max-width:620px)">
    <source srcset="img/dog_2.jpg" media="(max-width:960px)">
    <img src="img/dog_3.jpg" alt="ํ•˜์–€ ๊ฐ•์•„์ง€">
  </picture>
  • ๋ทฐํฌํŠธ 620px ์ดํ•˜์ธ ๊ฒฝ์šฐ dog_1.jpg ์„ ํƒ๋จ
  • ๋ทฐํฌํŠธ 960px ์ดํ•˜์ธ ๊ฒฝ์šฐ dog_2.jpg ์„ ํƒ๋จ
  • ๋ทฐํฌํŠธ 960px ์ดˆ๊ณผ์ธ ๊ฒฝ์šฐ or ๊ธฐ๋ณธ๊ฐ’(๋ธŒ๋ผ์šฐ์ € ์ง€์›X)์ผ ๋•Œ dog_3 ์„ ํƒ๋จ


source - type ์†์„ฑ

  • ์ด๋ฏธ์ง€์˜ ํฌ๋งท ํƒ€์ž…์„ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์•Œ๋ ค์คŒ

์˜ˆ์‹œ

<picture>
  <source srcset="photo.avif" type="image/avif" />
  <source srcset="photo.webp" type="image/webp" />
  <img src="photo.jpg" alt="photo" />
</picture>
  • ์œ„์—์„œ ๋ถ€ํ„ฐ type์†์„ฑ ๊ฐ’์ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ง€์›ํ•˜๋Š” ํฌ๋งท์ธ์ง€ ํƒ์ƒ‰ํ•จ
  • ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ๊ทธ srcset์ด <img> ์•ˆ์˜ src๋กœ ๋“ค์–ด๊ฐ
    ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ <source> ์š”์†Œ๋กœ ๋„˜์–ด๊ฐ
  • ๋งŒ์•ฝ ๋ชจ๋“  <source> ์š”์†Œ์˜ ํฌ๋งท์ด ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด <img> ์š”์†Œ๋ฅผ ๋ Œ๋”๋ง

WebP , AVIF ๋Š” ์ตœ์‹  ํฌ๋งท์˜ ์ด๋ฏธ์ง€๋กœ, ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ
ํฌ๋กœ์Šค๋ธŒ๋ผ์šฐ์ง•์„ ์œ„ํ•ด <picture>์š”์†Œ์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ
์ด๋Ÿฐ ๋ฐฉ์‹์˜ ๊ธฐ๋ฒ•์„ '์ ์ง„์  ํ–ฅ์ƒ๊ธฐ๋ฒ•' ์ด๋ผ๊ณ  ํ•จ

โ“ํฌ๋กœ์Šค๋ธŒ๋ผ์šฐ์ง• ์ด๋ž€?

  • ์›น ํŽ˜์ด์ง€ ์ž‘๋™ ์‹œ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์˜๋„ํ•œ ๋Œ€๋กœ ์ž˜ ๋‚˜์˜ค๋Š” ๊ฒƒ (๋ธŒ๋ผ์šฐ์ € ์ƒํ˜ธ ํ˜ธํ™˜์„ฑ)

    โ“์ ์ง„์  ํ–ฅ์ƒ๊ธฐ๋ฒ• (Progressive enhancement) ์ด๋ž€?
  • ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์˜ˆ์ „ ๊ธฐ์ˆ  ํ™˜๊ฒฝ์—์„œ ๋™์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋‘๊ณ , ์ตœ์‹  ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ์ตœ์‹  ๊ธฐ์ˆ ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐ๋ฒ•

<picture> ์‚ฌ์šฉํ•  ๋•Œ ์ง€์› ์•ˆ๋˜๋Š” ๋ธŒ๋ผ์šฐ์ €์— ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•ด <img src=""> ์ฃผ๋Š” ๊ฒƒ์€ ํ•„์ˆ˜!!




์ฐธ๊ณ ๋ฌธ์„œ mdn
https://developer.mozilla.org/ko/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture

profile
ํ™”์ดํŒ…~~^ใ…^/

0๊ฐœ์˜ ๋Œ“๊ธ€