๋คํฌ๋ชจ๋, ๋ผ์ดํธ๋ชจ๋๋ฅผ ์ค์ ํ๋ ํ ๊ธ ๋ฒํผ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์น ์ฌ์ดํธ๋ฅผ ๋ถ๋ฌ์ฌ ๋, ํ ๋ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒฝ์ฐ๋ ์๋ 3๊ฐ์ง์ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
1) ์ฌ์ฉ์์ ํ ๋ง ์ค์ ์ ์ฅ
2) ์ด์์ฒด์ ์์ค์ ๋คํฌ ๋ชจ๋
3) ์ ๋๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ๋ผ์ดํธ ๋ชจ๋
์ฐธ๊ณ ์ฌ์ดํธ > A Complete Guide to Dark Mode on the Web
"ํ ๊ธ ํ ๋ง"
- ํด๋์ค๋ฅผ ํ ๊ธํ๋ ๋ฐฉ๋ฒ
- ์คํ์ผ ์ํธ๋ฅผ ํ ๊ธํ๋ ๋ฐฉ๋ฒ
light-theme.css์ dark-theme.css ์คํ์ผ ์ํธ๋ฅผ ๋ฐ๋ก ์ ์ฅํ์ฌ ์ด ํ์ผ์ ํ ๊ธํ๋ ๋ฐฉ๋ฒ
const btn = document.querySelector(".btn-toggle");
const theme = document.querySelector("#theme-link");
btn.addEventListener("click", function() {
if (theme.getAttribute("href") == "light-theme.css") {
theme.href = "dark-theme.css";
} else {
theme.href = "light-theme.css";
}
});
"ํ ๋ง ๊ฒฐ์ "
1) ์ฌ์ฉ์์ ํ ๋ง ์ค์ ์ ์ฅ
- ์ฌ์ฉ์์ ํ ๋ง ์ ํ์ localStorage์ ์ ์ฅํ์ฌ ์ฌ์ดํธ ์ ์ฒด์ ํ์ ๋ฐฉ๋ฌธ์ ์ผ๊ด๋๊ฒ ์ ์ฉ
- โป JavaScript๋ ์ข ์ข CSS ์ดํ์ ์คํ๋๊ธฐ ๋๋ฌธ์ ์ด ์ ๊ทผ ๋ฐฉ์์ "์๋ชป๋ ํ ๋ง ํ๋์"(FOIT) ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์.
2) ์ด์์ฒด์ ์์ค์ ๋คํฌ ๋ชจ๋
- ์ฌ์ฉ์๊ฐ ์์คํ ์ค์ ์์ ์ง์ ๋ฐ์ ํ ๋ง์ ์ด๋์ด ํ ๋ง ์ค์์ ์ ํํ ์ ๋ณด๋ฅผ ์ด์ฉํด ๋ฏธ๋์ด ์ฟผ๋ฆฌ(prefers-color-scheme)๋ก ์น ์ฌ์ดํธ์ ํ ๋ง๋ฅผ ๊ฒฐ์
- @media (prefers-color-scheme: dark) ์ ๋คํฌ๋ชจ๋์์ ๋ณด์ฌ์ง ํ๋ฉด์ ์ฌ์ ์ํ ์ ์์
"๋ชจ๋ ๊ฒ์ ๊ฒฐํฉ"
- ์์คํ ํ๊ฒฝ ์ค์ ์ ๋ฐ๋ผ ์ด๋ก๊ฑฐ๋ ๋ฐ์ ํ ๋ง๋ฅผ ์๋์ผ๋ก ๋ก๋
- ์ฌ์ฉ์๊ฐ ์์คํ ๊ธฐ๋ณธ ์ค์ ์ ์๋์ผ๋ก ์ฌ์ ์ ๊ฐ๋ฅ
- ํ์ด์ง ์๋ก ๊ณ ์นจ์ ์ฌ์ฉ์๊ฐ ์ ํธํ๋ ํ ๋ง๋ฅผ ์ ์ง
'๐ปWEB FrontEnd' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
webpack (0) | 2021.02.08 |
---|