μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- νλ‘ νΈμλ
- UIUX
- μΉuiλμμΈ
- JavaScript
- μΉκ°λ°
- cssλ³μ
- jsμ€ν¬λ‘€μ΄λ²€νΈ
- λ‘컬μ€ν 리μ§
- μ½λ©μμ
- λ€ν¬λͺ¨λν κΈ
- λ°μνμΉ
- μΉλμμΈ
- μλ°μ€ν¬λ¦½νΈμ»΄ν¬λνΈ
- μ€ν¬λ‘€μ λλ©μ΄μ
- μΉUI
- λ°λλΌjs
- μ€ν¬λ¦°λ¦¬λμ§μ
- uiμ»΄ν¬λνΈ
- μλ°μ€ν¬λ¦½νΈ
- preferscolorscheme
- λ€ν¬λͺ¨λ
- μ κ·Όμ±
- ν λ§μλμ ν
- cssμ λλ©μ΄μ
- μλ°μ€ν¬λ¦½νΈui
- λ°λλΌμ€ν¬λ¦½νΈ
- UXλμμΈ
- uiuxλμμΈ
- μΈν°λ ν°λΈui
- μΉμ κ·Όμ±
- Today
- Total
UI Code Lab
π μ΄μ체μ ν λ§μ λ°λΌ μλμΌλ‘ λ³νλ μΉ UI – prefers-color-scheme νμ© κ°μ΄λ λ³Έλ¬Έ
π μ΄μ체μ ν λ§μ λ°λΌ μλμΌλ‘ λ³νλ μΉ UI – prefers-color-scheme νμ© κ°μ΄λ
π―κΏμμ΄π 2025. 7. 25. 12:17
λ€ν¬ λͺ¨λ ν κΈ κΈ°λ₯μ
μ¬μ©μ λ§μΆ€ UXμ μμμ μ λλ€.
νμ§λ§ μ¬μ©μκ° λ³λμ μ€μ μμ΄λ
μ΄μ체μ μ ν λ§μ λ§μΆ° μΉμ¬μ΄νΈκ° μμ°μ€λ½κ² λ°μνλ€λ©΄
ν¨μ¬ λ μ§κ΄μ μΈ κ²½νμ μ 곡ν μ μμ΅λλ€.
λ°λ‘ μ¬κΈ°μ μμ€ν ν λ§ κ°μ§ κΈ°λ₯μ΄ λ±μ₯ν©λλ€.
μ΄λ² ν¬μ€νΈμμλ
prefers-color-scheme λ―Έλμ΄ μΏΌλ¦¬λ₯Ό νμ©νμ¬
μ΄μ체μ μ λΌμ΄νΈ/λ€ν¬ μ€μ μ μλμΌλ‘ κ°μ§νκ³ ,
μ΄λ₯Ό μ¬μ©μ μ€μ κ³Ό μ‘°ν©ν΄
μμ°μ€λ½κ² μ ννλ λ‘μ§μ
ꡬνν΄λ³Ό κ±°μμ.
β ꡬν λͺ©ν
- OSμ λΌμ΄νΈ/λ€ν¬ λͺ¨λ μν κ°μ§
- μ¬μ©μ μ€μ κ³Ό μμ€ν μ€μ μ μ°μ μμ μ²λ¦¬
- CSS λ³μμ data-theme μμ±μ νμ©ν μ€νμΌ λ³κ²½
- λ‘컬 μ€ν λ¦¬μ§ μ μ₯μ ν΅ν μ¬μ©μ 컀μ€ν°λ§μ΄μ§
π§ CSSμμ μμ€ν ν λ§ κ°μ§νκΈ°
μ΄μ체μ κ° λ€ν¬ λͺ¨λλ‘ μ€μ λμ΄ μμ λλ₯Ό κ°μ§νλ €λ©΄ prefers-color-schemeμ μ¬μ©νλ©΄ λ©λλ€:
@media (prefers-color-scheme: dark) {
:root {
--bg-color: #121212;
--text-color: #ffffff;
}
}
@media (prefers-color-scheme: light) {
:root {
--bg-color: #ffffff;
--text-color: #000000;
}
}
π‘ μ΄ λ°©μμ JS μμ΄λ κΈ°λ³Έ μ€νμΌμ μλμΌλ‘ μ μ©ν μ μμ΄
μ΄κΈ° λ‘λ©μμ λΆλλ¬μ΄ μ¬μ©μ κ²½νμ μ λν©λλ€.
βοΈ JavaScriptλ‘ μ¬μ©μ μ€μ κ³Ό μμ€ν μ€μ μ λ³ν©νκΈ°
κΈ°λ³Έ CSSμ λν΄, JavaScriptλ₯Ό ν΅ν΄ λ‘컬 μ€μ μ μ°μ μ μ©νκ³ ,
μμ κ²½μ° μμ€ν ν λ§λ₯Ό κ°μ§νμ¬ μ μ©νλ λ°©μμ΄ UXμ μΌλ‘ λ μμ°μ€λ½μ΅λλ€.
window.addEventListener("DOMContentLoaded", () => {
const toggle = document.getElementById("toggle");
const savedTheme = localStorage.getItem("theme");
if (savedTheme) {
document.documentElement.setAttribute("data-theme", savedTheme);
toggle.checked = savedTheme === "dark";
} else {
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
const theme = prefersDark ? "dark" : "light";
document.documentElement.setAttribute("data-theme", theme);
toggle.checked = prefersDark;
}
});
- β μ¬μ©μ μ€μ μ΄ μ°μ
- β μ€μ μ΄ μμ κ²½μ° μμ€ν ν λ§ λ°μ
π§© νμ₯ ν¬μΈνΈ
- μμ΄μ½λ ν¨κ» μ ν: π → π
- μ ν μ fade μ λλ©μ΄μ μΆκ°λ‘ λΆλλ¬μ΄ UX
- matchMediaμ λ³ν κ°μ§ μ΄λ²€νΈλ₯Ό λ¬μ μ€μκ°μΌλ‘ ν λ§ λ³κ²½ κ°μ§ κ°λ₯
window.matchMedia("(prefers-color-scheme: dark)")
.addEventListener("change", e => {
if (!localStorage.getItem("theme")) {
const newTheme = e.matches ? "dark" : "light";
document.documentElement.setAttribute("data-theme", newTheme);
toggle.checked = e.matches;
}
});
π§΅ λ§λ¬΄λ¦¬νλ©°
μ¬μ©μ μ€μ¬ μΉ UI κ°λ°μ ν΅μ¬μ μ νμ§λ₯Ό μ£Όλ,
μλνλ λ°°λ €λ₯Ό λ΄λ κ²μ λλ€.
μμ€ν ν λ§ κ°μ§ κΈ°λ₯μ
μμ κΈ°λ₯μ²λΌ λ³΄μΌ μ μμ§λ§,
μ¬μ©μ λ§μ‘±λμ κΈ°μ μ μμ±λλ₯Ό λμ΄λ
κ²°μ μ μΈ μμκ° λ©λλ€.
λ€μ ν¬μ€νΈμμλ
μ¬μ©μμ ν λ§ μ€μ λ³κ²½μ
μκ°μ μΌλ‘ μ΄λ»κ² λ λ§€λλ½κ² ννν μ μμμ§μ λν΄
λ€λ€λ³Ό μμ μ λλ€.
UI Code Labμμ
λ λλν νλ°νΈμλ μΈν°λμ μ ν¨κ»
κ³ λ―Όν΄λ΄μ! π§ͺ