์๋ ํ์ธ์, ๋ฌด์๋ณด๋ค ๋ ธ๊ณ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ๋ง ์ข์ต๋๋ค :)
์ง๋ฌธ์ด ์์ต๋๋ค. srcset์ ์ฌ์ฉํ์ฌ img ํ๊ทธ์ ์ง์ฐ ๋ก๋ฉ์ ๊ตฌํํด์ผ ํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์กฐ๊ธ ๊ณต๋ถํ๋๋ฐ srcset์ด ์ง์๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ง์ต๋๊น, ์๋๋ฉด ๋น ์ง ๊ฒ์ด ์์ต๋๊น?
๊ทธ๋ ๋ค๋ฉด ํด์๋๊ฐ ๋ค๋ฅธ ์ด๋ฏธ์ง์ ์๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น? (1x, 2x ๋ฑ...)
๋น์ ์ ๋์์ ์ฃผ์ ์ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค.
NS.
์๋ ํ์ธ์,
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ถํํ๋ srcset์ ์ง์ํ์ง ์์ง๋ง ์ง์ํด์ผ ํฉ๋๋ค. ์๋นํ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค.
์ฆ, ๋ธ๋ผ์ฐ์ ๊ฐ ์ํํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก srcset์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์ดํดํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ง์ํ๊ธฐ๊ฐ ์ฝ์ง ์์ต๋๋ค.
์ฐ๋ฆฌ๋ srcset์ ํน๋ณํ ๊ฒฝ์ฐ๋ก ์ทจ๊ธํ๊ณ ๋ฐฐ๊ฒฝ์์ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ๋ ค๊ณ ํ์ง ์๊ณ ๋์ ์ด๋ฏธ์ง๊ฐ ๋ทฐํฌํธ์ผ ๋ srcset
์ค์ ํฉ๋๋ค.
๋ค์ html ํ๊ทธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
<img [defaultImage]="defaultImage" lazyLoad="small.jpg 300w, large.jpg 500w">
์ด๋ฏธ์ง๊ฐ ๋ทฐํฌํธ์ ์์ ๋ srcset
์ดํด๋ณด๊ณ lazyLoad
์ srcset
-string์ด ํฌํจ๋์ด ์์์ ๊ฐ์งํ๊ณ ํ๊ทธ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ณํํฉ๋๋ค.
<img srcset="small.jpg 300w, large.jpg 500w">
์ฐฌ์ฑ:
๊ฐ๋จํ ๊ตฌํ
๋ฒ์ฃ์:
์ฌ์ฉ์๋ "defaultImage"๋ฅผ ์ ๋ ๋ณผ ์ ์์ต๋๋ค.
์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ๋ ๋์ ๋คํธ์ํฌ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ srcset
๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์ต์์ ์ต์
์ ์ ํํฉ๋๋ค(๋ธ๋ผ์ฐ์ ๊ฐ ์ํํ์ด์ผ ํ๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ฒ๋ผ).
๋ค์ html ํ๊ทธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
<img [defaultImage]="defaultImage" lazyLoad="small.jpg 300w, large.jpg 500w">
lazyLoad
์ srcset
๊ฐ ํฌํจ๋์ด ์์์ ๊ฐ์งํ๊ณ ๋ฌธ์์ด์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ๋ฌธ ๋ถ์ํฉ๋๋ค.
[ { url: 'small.jpg', width: 300 }, { url: 'large.jpg', width: 500 } ]
๋ธ๋ผ์ฐ์ ๋๋น(๋ฐ ์ฅ์น ํฝ์
๋น์จ )์ ๋น๊ตํ์ฌ ์ต์์ ์ด๋ฏธ์ง๋ฅผ ์ ํํฉ๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ๊ณ ๋ก๋๋ ๋ srcset
ํ๊ณ ์ด๋ฏธ์ง๊ฐ ์บ์์ ์์ผ๋ฏ๋ก ์ฆ์ ๋ก๋๋ฉ๋๋ค.
์ฐฌ์ฑ:
์ด๋ฏธ์ง๊ฐ ์ง์ฐ ๋ก๋๋ฉ๋๋ค ๐
์ฌ์ฉ์๋ ๊ธฐ๋ณธ ์ด๋ฏธ์ง๋ฅผ ๋ณด๊ฒ ๋ฉ๋๋ค.
๋คํธ์ํฌ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค( srcset
์์ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํด์ผ ํฉ๋๊น ์๋๋ฉด ์ค๋ฅ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํด์ผ ํฉ๋๊น?).
๋ฒ์ฃ์:
๋ธ๋ผ์ฐ์ ์์ ์ํํด์ผ ํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ฌธ์์ด์ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๊ฒ์ ํญ์ ๊น๋ค๋กญ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์๋ง๋ ์ผ๋ถ ์ฃ์ง ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋์น ๊ฒ์
๋๋ค.
๋ด ์ดํด์ ๋ฐ๋ฅด๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์บ์์ ์ ์ฅ๋ ๊ฒฝ์ฐ ํญ์ ๊ฐ์ฅ ํฐ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฏธ์ง๊ฐ ์ด๋ฏธ ๋ก๋๋์๋์ง ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ผ๋ฏ๋ก ๊ฐ์ฅ ์ ๋ง๋ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํด์ผ ํฉ๋๋ค(๊ทธ๋ฌ๋ srcset
์ค์ ํ ํ์ ๊ฐ์ฅ ํฐ ์ด๋ฏธ์ง๊ฐ ํ์๋จ). ์๋ฅผ ๋ค์ด ๋ค์ srcset small.jpg 300w, large.jpg 500w
์๊ณ ํ๋ฉด์ด 500ํฝ์
๋ฏธ๋ง์ด์ง๋ง large.jpg
๊ฐ ์ด๋ฏธ ๋ก๋๋์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ด ์ดํด์ ๋ฐ๋ฅด๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์บ์์ ์๊ธฐ ๋๋ฌธ์ large.jpg
๋ฅผ ์ ํํด์ผ ํ์ง๋ง small.jpg
๋ก๋ํ ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ก๋๋ ๋ srcset
๋ฐ ๋ธ๋ผ์ฐ์ ๋ large.jpg
(๊ทธ๋ฌ๋ ํ๋ฆด ์ ์์). ์ฆ, ๋ถํ์ํ๊ฒ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ์ต๋๋ค.
๋๋ ์ต์ 2๊ฐ ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํ๊ณ (๋๋ฌด ์ด๋ ต์ง ์์์ผ ํจ) ์ฐ๋ฆฌ๊ฐ ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ง๊ธ์ ์๊ฐ์ด ๋งค์ฐ ์ ํ๋์ด ์์ง๋ง ๊ธฐ๊บผ์ด PR์ ์๋ฝํฉ๋๋ค. :)
@tjoskar๋ , ๋น ๋ฅธ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ๋ ๋ฒ์งธ ์ต์ ์ด ๊ฐ๋ฅํ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๋ํ ๋ง๊ฐ ์๊ฐ์ด ์ผ๋ง ๋จ์ง ์์๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ ์๊ฐ์ด ๋ง์ง ์์ต๋๋ค. ํ์ง๋ง ์๊ฐ์ด ๋ ์๊ธฐ๋ฉด ์ด ๊ธฐ๋ฅ์ ๊ธฐ์ฌํ๊ณ ์ถ์ต๋๋ค. ํนํ ๋ด๊ฐ ์ด๋ฏธ ๊ฒ์ผ๋ฅธ ์ง์์ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์์ ํ์ฅํ๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด hlink.href ์์ฑ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ํ๊ทธ ๋ก๋ :)
๋๋ ๊ธฐ๋ณธ ๋ธ๋ผ์ฐ์ srcset ์ต์ ์ ๋ฌด์ํ๊ณ ์์ ์ ์์ฌ ๊ฒฐ์ ํ๋ก์ธ์ค๋ก ๊ตฌํํ๊ณ ์๊ฐ์ ๋๊ณ ์กฐ์ ํ์ฌ ๊ฐ๋ฅํ ํ ์ต๊ณ ๊ฐ ๋๋๋ก ํฉ๋๋ค. :)
์ฌ์๋ง ์ค์ํ๋ฉด ๋๋ฉฐ ์ฌ์์ด ๋งค์ฐ ๊ฐ๋จํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋น์ ์ด ์ง์ ํ๋ฏ์ด ๋ธ๋ผ์ฐ์ ๊ตฌํ์ ์ฌ๊ธฐ์ ๋ฌ์ฑํ๊ณ ์ ํ๋ ๊ฒ์ ๊นจ๋จ๋ฆด ์ ์์ผ๋ฏ๋ก ์ฐํํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฐ์ํ ์ด๋ฏธ์ง ์ง์์ ๋ ๋ค์ ์ถ๊ฐํ๋ ํ ๋ฆฌํ์คํธ(#231)๋ฅผ ์ ์ถํ์ต๋๋ค. ๋๋ ์ด๋ค ์ ๋ ฅ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
์ด๊ฒ์ 3.4.0
ํฌํจ๋์ด ์์ต๋๋ค. @sapierens ๊ฐ์ฌ