๐ styled-components๋ฅผ ์ฌ์ฉํ์ง ์๊ณ viewport ๊ธฐ์ค์ผ๋ก img ๋ณ๊ฒฝํ๊ธฐ
๊ตฌ๋
์ ์ฒญ ํ์ด์ง๋ฅผ ๋ฐ์ํ์ผ๋ก ๊ตฌ์ฑํ๋ฉฐ viewport
๋ฅผ ๊ธฐ์ค์ผ๋ก 768px
์ดํ๋ ๋ชจ๋ฐ์ผ ํ๊ฒฝ, 768px
์ด์์ ๋ฐ์คํฌํ ํ๊ฒฝ์ผ๋ก ํ์ด์ง๋ฅผ ์ ์ํ๋ ์ค viewport
์ ๋ฐ๋ผ ๋ธ๋ผ์ฐ์ ์ ๋ฉ์ธ ์ด๋ฏธ์ง๋ฅผ ๋ค๋ฅด๊ฒ ์ค์ ํด์ผ ํ๋ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
๊ทธ๋์, styled-components
๋ก viewport
์ ๋ฐ๋ผ์ src
๋ฅผ ๋ฐ๊ฟ ์ค ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋์ง ์ดํด๋ณด๋ค ๋ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์๋ HTML
ํ๊ทธ์ธ <picture>
ํ๊ทธ๊ฐ ์์๋ค. ๊ทธ๋์ <picture>
ํ๊ทธ์ <source>
ํ๊ทธ๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๋๋ ๊ตณ์ด styled-components
๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ์ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์๋ค.
์ฐ์ <picture>
ํ๊ทธ๊ฐ ๋ฌด์์ธ์ง ๊ฐ๋จํ๊ฒ ์ดํด๋ณด์๋ฉด, 0๊ฐ ์ด์์ <source>
์์์ ํ๋์ <img>
์์๋ฅผ ํฌํจํ์ฌ ๋ค์ํ ๋์คํ๋ ์ด/์ฅ์น ์๋๋ฆฌ์ค์ ๋ํ ๋์ฒด ๋ฒ์ ์ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ๋ค. ์ฆ, ๋ธ๋ผ์ฐ์ ๋ <picture>
์ ์์ํ๊ทธ์ธ <source>
์์๋ฅผ ๊ณ ๋ คํ๊ณ , ๊ทธ์ค ๊ฐ์ฅ ์ผ์นํ๋ ํญ๋ชฉ์ ์ ํํ๋ค. ๋ง์ฝ, ์ผ์นํ๋ ํญ๋ชฉ์ด ์๊ฑฐ๋ ๋ธ๋ผ์ฐ์ ๊ฐ <picture>
์์๋ฅผ ์ง์ํ์ง ์์ ๊ฒฝ์ฐ <img> src
์์ฑ์ ์ ํํ๋ค. ํ๋ง๋๋ก <picture>
์ ํ์ํ๊ทธ์์ <source>
์ ๊ธฐ์ค์ ์ถฉ์กฑํ๋ฉด <source>
๋ฅผ ํ์ํ๊ณ , <source>
์ ๊ธฐ์ค์ ์ถฉ์กฑํ์ง ๋ชปํ๋ฉด <img>
ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค๋ ๋ง์ด๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ํ๋จ ์ฝ๋ ๋ธ๋ก์์๋ viewport
๊ฐ min-width: 768px
๋ณด๋ค ์๋ค๋ฉด <source>
ํ๊ทธ์ srcset
๋ฅผ ์ฌ์ฉํ๊ณ , viewport
๊ฐ min-width: 768px
๋ณด๋ค ํฌ๋ค๋ฉด <source>
ํ๊ทธ ๊ธฐ์ค์ ์ถฉ์กฑ๋์ง ์๊ธฐ ๋๋ฌธ์ <img>
ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค๋ ๋ป์ด๋ค. ์์ธํ ์ฌ์ฉ๋ฐฉ๋ฒ์ ํ๋จ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์!
์ฌ๋ด์ผ๋ก <source>
๋ฅผ ์ธ์ ์ฐ๋์ง ์ ๋ชฐ๋๋๋ฐ, Media
ํน์ img
ํ๊ทธ๋ฅผ ์ฌ์ฉํ ๋ ์ด๋ค. ์ฌ๊ธฐ์ Media
๋ <video>
, <audio>
๋ฑ์ ๋งํ๋ค. ๊ทธ๋ฆฌ๊ณ <source>
์๋ type
property๋ฅผ ๋ช
์ํ๋๋ฐ ์ด๋, MIME resource๋ฅผ ์ฌ์ฉํ๋ค. ๋, <source>
ํ๊ทธ์๋ src
ํน์ srcset
property๊ฐ ์ฌ์ฉ๋๋๋ฐ src
property๋ ๋ถ๋ชจ ํ๊ทธ๊ฐ <audio>
ํน์ <video>
ํ๊ทธ์ผ ๋ ์ฌ์ฉํ๊ณ , ๋ถ๋ชจ ํ๊ทธ๊ฐ <picture>
์ผ ๋๋ ์ฌ์ฉํ์ง ์๋๋ค. ๋ํ srcset
property๋ ๋ถ๋ชจ ํ๊ทธ๊ฐ <picture>
ํ๊ทธ์ผ ๋ ์ฌ์ฉํ๋ค. ๋ถ๋ชจ ํ๊ทธ๊ฐ <audio>
ํน์ <video>
ํ๊ทธ์ผ ๋๋ ์ฌ์ฉํ์ง ์๋๋ค.
<picture>
<source width="100%" type="image/jpeg" media="(min-width: 768px)"
srcSet={`${NEWSLETTER_IMG.deskTop}`} />
<img width="100%" alt="subscribe-img"
src={`${NEWSLETTER_IMG.mobile}`} />
</picture>
ํ๋จ CodePen ํ๊ฒฝ์์๋ viewport๋ฅผ ๋ฐ๋ก ์กฐ์ ํ ์๊ฐ ์๋ค. ๋ฐ๋ผ์ 0.5x์ 0.25x๋ฅผ ๋๋ฌ๋ณด๋ฉด์ ๋น๊ตํด๋ณด์! 0.5x๋ ๋ชจ๋ฐ์ผ๋ฒ์ , 0.25x๋ PC๋ฒ์ ์ด๋ผ๊ณ ๋ณด๋ฉด๋๋ค!
See the Pen picture + source tag by an (@YWTechIT) on CodePen.
Reference
- https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture
- https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source
- https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types
- https://www.imdb.com/title/tt0816692/
- https://www.unrealengine.com/marketplace/ko/product/black-hole-creator
๋๊ธ