๋คํฌ๋ชจ๋ ๋ผ์ดํธ ๋ชจ๋ ๋ฒํผ์ ์ ์ฉํด์ ๋ธ๋ก๊ทธ ๋์ CSS ์ ์ฉํ๊ธฐ
๋คํฌ๋ชจ๋์ ๋ผ์ดํธ ๋ชจ๋ ์คํจ์ ์ฝ๊ฒ ๋ธ๋ก๊ทธ์ ๋คํฌ๋ชจ๋ ๋ฒํผ์ ์ค์ ํด์ ๋ธ๋ก๊ทธ ๋ฐฉ๋ฌธ์๋ค์๊ฒ ๊ฐ์ธ์ ์ทจํฅ์ ๋ง๋ ๋ธ๋ก๊ทธ ํ๊ฒฝ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด์ ๋ ๋จ์ํ ์ฝํ ์ธ ๋ง ์ ๊ณตํ๋ ์๋๋ฅผ ๋์ด, ์ฌ์ฉ์ ๊ฒฝํ(UX)์ ๊ทน๋ํํ๋ ์์๊ฐ ํ์์ ๋๋ค. ๊ทธ ์ค์ฌ์ ์๋ ๋คํฌ๋ชจ๋ ๋ฒํผ์ ๋ฐฉ๋ฌธ์์ ์ทจํฅ์ ๋ฐ๋ผ ํ ๋ง๋ฅผ ์ ํํ ์ ์๋๋ก ํ๊ณ , ํ๋ฉด ๋ฐ๊ธฐ์ ์คํ์ผ์ ์์ ๋กญ๊ฒ ์ ํํ ์ ์์ต๋๋ค.
๋คํฌ๋ชจ๋. ๋ผ์ดํธ๋ชจ๋ ์คํจ ๊ณต์
์ด ๊ธ์์๋ ๋คํฌ๋ชจ๋ ์คํจ ๋ฒํผ์ ๋ธ๋ก๊ทธ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ณ , ์ด๋ฅผ ํตํด ๋ธ๋ก๊ทธ๋ฅผ ๊ฐ์ฑ์ ์ผ๋ก ๊พธ๋ฏธ๊ณ ์ฌ์ฉ์ ๋ง์กฑ๋๋ฅผ ๋์ด๋ ๋ธ๋ก๊ทธ ํ ๋ง ์์ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. JavaScript์ CSS๋ฅผ ํ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ๋คํฌ๋ชจ๋์ ๋ผ์ดํธ ๋ชจ๋๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
JavaScript๋ฅผ ์ฌ์ฉํด ๋คํฌ๋ชจ๋์ ๋ผ์ดํธ ๋ชจ๋ ๋ฒํผ์ ์ ์ฉํ์ฌ ๋์ ์ผ๋ก CSS๋ฅผ ์ ์ฉํด ํ ๋ง๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ๊ณผ ์ค์ ๋ก ๋ธ๋ก๊ทธ์ ๊ตฌํํ๋ ๊ณผ์ ๊ณผ ์ฝ๋๋ฅผ ๊ณต์ ํฉ๋๋ค.
ํฐ์คํ ๋ฆฌ ๋ธ๋ก๊ทธ์ ๋คํฌ๋ชจ๋ ๋ผ์ดํฌ๋ชจ๋ ์คํจ ์ถ๊ฐํ๋ ๋ฒ
๋ธ๋ก๊ทธ์ ๋ฐฉ๋ฌธํ๋ ๋ฐฉ๋ฌธ์์ ์ ํ์ ์ํด ํ์ฌ์ ์ฌ์ดํธ๋ ๋ธ๋ก๊ทธ๋ฅผ ๋์ CSS๋ฅผ ํ์ฉํ๋ฉด ๋ฐฉ๋ฌธ์๊ฐ ์์ ์ ์ทจํฅ์ ๋ง๋ ํ ๋ง๋ฅผ ์ ํํ ์ ์์ด ๋ธ๋ก๊ทธ์ ์ฒด๋ฅ ์๊ฐ์ ๋๋ฆฌ๊ณ , ๋ง์กฑ๋๋ฅผ ๋์ด๋ ๋ฐ ํจ๊ณผ์ ์ ๋๋ค.
- ๋คํฌ ๋ชจ๋ ํ ๋ง: ๋ฐฉ๋ฌธ์๊ฐ ๋คํฌ ๋ชจ๋๋ฅผ ํ์ฑํํ๋ฉด ๋ณ๊ฒฝ.
- ์คํจ ๋ฐ์ํ ์คํ์ผ: ๋ค๋ฅธ ์คํ์ผ ์ ์ฉ.
- ์ฌ์ฉ์ ์ง์ ํ ๋ง: ์ฌ์ฉ์ ์ ํ์ ๋ฐ๋ผ ํ ๋ง ๋ณ๊ฒฝ.
1. ๋คํฌ ํ ๋ง ์ ํ ๋ฒํผ ์ฝ๋ ์ ์ฉ
๋ฐฉ๋ฌธ์๊ฐ ๋ธ๋ก๊ทธ๋ฅผ ์์ ์ ์ทจํฅ์ ๋ฐ๋ผ ํ ๋ง๋ฅผ ๋ณ๊ฒฝํ ์ ์๋๋ก ํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก ์ ํ ๋ฒํผ์ ๋๋ค. ์๋๋ ๋ธ๋ก๊ทธ์ ์ ์ฉํ ์ ์๋ ์ฝ๋์ ๋๋ค. JavaScript๋ฅผ ์ฌ์ฉํ๋ฉด HTML ์์์ ๋์ ์ผ๋ก CSS ํด๋์ค๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
๋ฐฉ๋ฌธ์๊ฐ ํ์ฌ ํ ๋ง๋ฅผ ์ ํํ ์ ์๋๋ก ๋ฒํผ์ ์ถ๊ฐํฉ๋๋ค. ์๋ HTML ์ฝ๋๋ฅผ ์ฌ์ฉํด ๋ฒํผ์ ์ ์ฉํฉ๋๋ค.
<button id="toggle-theme" style="padding: 10px 20px; font-size: 16px; margin-top: 20px; cursor: pointer; background-color: white; color: black; border: 2px solid black; border-radius: 5px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); transition: background-color 0.3s, color 0.3s;"> ํ
๋ง ์ ํ </button>
์: ์ ์ฉ ์์น-์ฌ์ด๋๋ฐ
๊ด๋ฆฌ์ ํ์ด์ง์์ ๋ค์ ๊ณผ์ ์ ๋ฐ๋ผ ๋ฒํผ์ ์ถ๊ฐํฉ๋๋ค.
- ์ฌ์ด๋๋ฐ ์ค์ ๊ธฐ๋ณธ ๋ชจ๋์์ HTML ๋ฐฐ๋ ์ถ๋ ฅ์ ์ ํํฉ๋๋ค.
- ์ HTML ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ ์ ์ฅํฉ๋๋ค.
- HTML ๋ฐฐ๋ ์ถ๋ ฅ์ด ์์ ๊ฒฝ์ฐ, ํ๋ฌ๊ทธ์ธ์์ ํด๋น ๋ชจ๋์ ์ค์น ํ ์งํํฉ๋๋ค.
์์ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ๋ณต์ฌํด์ ์ ์ฅํฉ๋๋ค.
2. ๋ฒํผ ์คํฌ๋ฆฝํธ ์ฝ๋ ์ถ๊ฐ
ํ ๋ง ์ ํ ๊ธฐ๋ฅ์ ํ์ฑํํ๊ธฐ ์ํด JavaScript ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
<script> function toggleTheme() { const htmlElement = document.documentElement; const currentTheme = htmlElement.getAttribute('data-phocus-theme'); const themeStylesheet = document.getElementById('theme-stylesheet'); const button = document.getElementById('toggle-theme'); if (currentTheme === 'dark') { htmlElement.setAttribute('data-phocus-theme', 'light'); themeStylesheet.href = 'https://tistory1.daumcdn.net/tistory/7199696/skin/images/light.css'; button.textContent = '๋คํฌ ๋ชจ๋'; } else { htmlElement.setAttribute('data-phocus-theme', 'dark'); themeStylesheet.href = 'https://tistory1.daumcdn.net/tistory/7199696/skin/images/dark.css'; button.textContent = '๋ผ์ดํธ ๋ชจ๋'; } localStorage.setItem('theme', htmlElement.getAttribute('data-phocus-theme')); } document.addEventListener('DOMContentLoaded', () => { const savedTheme = localStorage.getItem('theme') || 'light'; const htmlElement = document.documentElement; const themeStylesheet = document.getElementById('theme-stylesheet'); const button = document.getElementById('toggle-theme'); htmlElement.setAttribute('data-phocus-theme', savedTheme); themeStylesheet.href = `https://tistory1.daumcdn.net/tistory/7494097/skin/images/${savedTheme}.css`; button.textContent = savedTheme === 'dark' ? '๋ผ์ดํธ ๋ชจ๋' : '๋คํฌ ๋ชจ๋'; }); document.getElementById('toggle-theme').addEventListener('click', toggleTheme); </script>
์คํฌ๋ฆฝํธ๋ฅผ ๋ธ๋ก๊ทธ ์คํจ ํธ์ง- HTML - /body ํ๊ทธ ๋ฐ๋ก ์์ ์ฝ์ ํฉ๋๋ค.
3. ๊ธฐ๋ณธ ์คํจ ์ค์
๋ธ๋ก๊ทธ ๋ฐฉ๋ฌธ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฉ๋๋ ํ ๋ง๋ฅผ ์ค์ ํฉ๋๋ค. data-phocus-theme ์์ฑ์ ํ์ฉํด ์ด๊ธฐ ์ํ๋ฅผ ์ง์ ํฉ๋๋ค..
<html lang="ko" data-phocus-theme="light"> <link id="theme-stylesheet" rel="stylesheet" href="/skin/images/light.css"> <!-- Default light theme -->
๋ค์ ๋ CSS ํ์ผ์ ์ ๋ก๋ํ์ฌ theme-stylesheet.href ๊ฒฝ๋ก์ ๋ง๊ฒ ์ค์ ํฉ๋๋ค:
- light.css: ๋ฐ์ ํ ๋ง
- dark.css: ์ด๋์ด ํ ๋ง
์ฝ๋๋ HTML ํค๋ ๋ถ๋ถ์ ์ถ๊ฐํด์ฃผ๋ฉด ๋ฉ๋๋ค.
4. ์คํจ CSS ํ์ผ ๋ค์ด๋ก๋
์๋ ํ์ผ์ ํฐ์คํ ๋ฆฌ ๋ถํด๋ฝ ๊ธฐ๋ณธ ์คํจ์ ๋คํฌ ๋ชจ๋์ ๋ผ์ดํธ ๋ชจ๋ ๋ณ๊ฒฝํ ์ฝ๋์ ๋๋ค. ๋ค๋ฅธ ์คํจ์ ๋ณ๊ฒฝํ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
๋ค์ ๋ CSS ํ์ผ์ ๋ค์ด๋ฐ์ ์ ๋ก๋ํ ํ, ํด๋น ๊ฒฝ๋ก๋ฅผ ์ ์คํฌ๋ฆฝํธ์ HTML ์ฝ๋์ ๋ฐ์ํฉ๋๋ค.
์ ์ฉ๋ ์ํ ๋ธ๋ก๊ทธ
์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ๊ตฌํ๋ ๋ธ๋ก๊ทธ ์ ๋๋ค. ๋ฐฉ๋ฌธ์๋ค์ ๋คํฌ ๋ชจ๋์ ๋ผ์ดํธ ๋ชจ๋๋ฅผ ์์ ๋กญ๊ฒ ์ ํํ ์ ์์ต๋๋ค.
๋ธ๋ก๊ทธ์ ๋คํฌ๋ชจ๋์ ๋ผ์ดํธ๋ชจ๋ ์ ํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋จ์ํ ๋์์ธ ๋ณํ๊ฐ ์๋๋๋ค. ๋ฐฉ๋ฌธ์์ ๋์ฆ๋ฅผ ๋ฐ์ํ๊ณ ,๋์์ธ์ ๊ฐ์ฑ์ ์ผ๋ก ๊ฐ์ ํ๋ฉฐ, SEO ์ฑ๊ณผ์๋ ๊ธ์ ์ ์ธ ์ํฅ์ ์ค ์ ์๋ ์ ๋ต์ ์ธ ์ ํ์ ๋๋ค.
์ง๊ธ ๋ฐ๋ก ๋ธ๋ก๊ทธ์ ์ ์ฉํด ๋ณด์ธ์! ๋ฐฉ๋ฌธ์์๊ฒ ์ ํ๊ถ์ ์ฃผ๋ ๊ฒ๋ง์ผ๋ก๋, ๋ธ๋ก๊ทธ์ ํ์ง์ ํ ๋จ๊ณ ๋ ๋์์ง ์ ์์ต๋๋ค.