| μΌ | μ | ν | μ | λͺ© | κΈ | ν | 
|---|---|---|---|---|---|---|
| 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 | 
- JavaScript
 - λ€ν¬λͺ¨λν κΈ
 - μλ°μ€ν¬λ¦½νΈ
 - λ°λ§μΌν
 - μΉμ κ·Όμ±
 - UIUX
 - uiμ»΄ν¬λνΈ
 - 골λ
 - νλ‘ νΈμλ
 - μλ°μ€ν¬λ¦½νΈui
 - kpopdemonhunters
 - λ·νλ¦μ€μ λλ©μ΄μ 
 - μΌμ΄νλ°λͺ¬νν°μ€
 - jsμ€ν¬λ‘€μ΄λ²€νΈ
 - Golden
 - μ¬μ보μ΄μ¦
 - λ€ν¬λͺ¨λ
 - μΉκ°λ°
 - UXλμμΈ
 - λ°λλΌμ€ν¬λ¦½νΈ
 - μΌλ°ν
 - ννΈλ¦μ€
 - μΉλμμΈ
 - λ·νλ¦μ€ost
 - λΉλ³΄λμ°¨νΈ
 - μ€ν¬λ‘€μ λλ©μ΄μ 
 - κ°μμμ΄λ
 - μ κ·Όμ±
 - μΉUI
 - λ°λλΌjs
 
- 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μμ
λ λλν νλ°νΈμλ μΈν°λμ μ ν¨κ»
κ³ λ―Όν΄λ΄μ! π§ͺ