π λ€ν¬ λͺ¨λ μ ν μ, λΆλλ½κ³ μμ±λ λμ μΉ UI λ§λ€κΈ°
μ΅κ·Ό μΉμ¬μ΄νΈμμ λ€ν¬ λͺ¨λ μ ν κΈ°λ₯μ
λ¨μν νΈλ λλ₯Ό λμ΄
μ¬μ©μ κ²½ν(UX)μ ν΅μ¬ μμλ‘ μ리 μ‘κ³ μμ΅λλ€.
λ³Έ κΈμμλ CSSμ JavaScriptλ₯Ό νμ©νμ¬
ν λ§ λ³κ²½ μ λΆλλ½κ³ λ§€λλ¬μ΄ μ νμ ꡬννλ
λ°©λ²μ μ¬λ μκ² λ€λ€λ΄ λλ€.
νλ°νΈμλ κ°λ°μλ λ¬Όλ‘ ,
UX/UI λμμ΄λμκ²λ λμμ΄ λλ
μ€μ νμ μ 리νμ΅λλ€.
β¨ μ λΆλλ¬μ΄ ν λ§ μ νμ΄ μ€μνκ°?
- κ°μμ€λ¬μ΄ νλ©΄ μ νμ μκ°μ νΌλ‘λ₯Ό μ λ°ν μ μμ
- μ ν λ°©μμ΄ μΈλ ¨λ μλ‘ μλΉμ€ νμ§μ λν μΈμμ΄ μμΉ
- νΉν λ€ν¬ λͺ¨λλ λ°κΈ° λλΉκ° ν¬κΈ° λλ¬Έμ, μ ν μκΈ μ‘°μ μ΄ μ€μ
π¨ CSS TransitionμΌλ‘ λΆλλ¬μ΄ μ€νμΌ μ ν
CSS λ³μ κΈ°λ° ν λ§ μμ€ν μ νμ©νλ©΄, transition μμ±λ§μΌλ‘λ λΆλλ¬μ΄ μκ° ν¨κ³Όλ₯Ό λΌ μ μμ΅λλ€.
body {
background-color: var(--bg-color);
color: var(--text-color);
transition: background-color 0.3s ease-in-out, color 0.3s ease-in-out;
}
λ³μ μ μ©μ΄ νμν μμμ transitionμ λ°λμ μ€μ ν΄μΌ μλν©λλ€.
π§© μμ΄μ½·κ·Έλν½ μμλ ν¨κ» μ νμν€κΈ°
μμ΄μ½μ opacity, transform λ±μ μ μ©νλ©΄ ν λ§ μ νμ΄ λμ± μλκ° μκ² λκ»΄μ§λλ€.
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
.theme-icon {
animation: fadeIn 0.5s ease;
}
λλ νμ π ↔οΈ λ¬ π μ νμ²λΌ rotate λλ scaleμ νμ©ν λͺ¨μ λ μλν΄λ³Ό μ μμ΅λλ€.
π§ JavaScriptλ‘ ν λ§ μ€μ μν κ΄λ¦¬νκΈ°
CSSλ§μΌλ‘λ μ νμ μΌ μ μμΌλ―λ‘, JSλ‘ data-theme μμ± κ°μ μ€μ ν΄ λμ μΌλ‘ μ€νμΌμ λ³κ²½ν©λλ€.
function setTheme(theme) {
document.documentElement.setAttribute("data-theme", theme);
}
π μ΄μ체μ ν λ§ κ°μ§ + μ€μκ° μ μ©
μ¬μ©μκ° λ³λλ‘ μ€μ νμ§ μμ κ²½μ°, μ΄μ체μ μ λΌμ΄νΈ/λ€ν¬ μ€μ μ λ°μν μ μμ΅λλ€:
window.matchMedia("(prefers-color-scheme: dark)")
.addEventListener("change", (e) => {
const newTheme = e.matches ? "dark" : "light";
setTheme(newTheme);
});
matchMedia μ΄λ²€νΈλ₯Ό ν΅ν΄ μ΄μ체μ ν λ§ λ³κ²½μ μ€μκ° κ°μ§ν μ μμ΅λλ€.
π· ν λ§ μ ν UIμ νλ¦μ μ΄λ―Έμ§λ‘ νννλ©΄ μ’μ΅λλ€
- λ€ν¬ λͺ¨λ μ μ© μ /ν λΉκ΅ μ΄λ―Έμ§
- μ¬μ©μ ν΄λ¦ → μ λλ©μ΄μ νλ¦μ μκ°νν λ€μ΄μ΄κ·Έλ¨
- ν λ§ ν κΈ μΈν°νμ΄μ€ ꡬμ±λ
π κ΄λ ¨ μ½ν μΈ
- prefers-color-scheme λ―Έλμ΄μΏΌλ¦¬λ‘ μλ ν λ§ λ°μνκΈ°
- λ°λλΌ JSλ‘ λ§λ λ€ν¬ λͺ¨λ UX κ°ν κ°μ΄λ
π μμ½νλ©°
CSSμ transitionκ³Ό λ³μ,
JSμ matchMediaμ μ΄λ²€νΈ κ°μ§λ₯Ό μ μ ν μ‘°ν©νλ©΄
λΆλλ¬μ΄ ν λ§ μ ν UXλ₯Ό ꡬνν μ μμ΅λλ€.
μ΄λ λ¨μ κΈ°λ₯μ λμ΄
μ¬μ©μ μ€μ¬ μΉ λμμΈμ
μ€μν ν¬μΈνΈμ λλ€.
λ€μ κΈμμλ
ν λ§ λ³κ²½ μ λ°°κ²½ κ·Έλν½μ΄λ
λͺ¨μ μ λ μ κ΅νκ² λ€λ£¨λ
κ³ κΈ UI ꡬνλ²λ μκ°ν μμ μ λλ€.