μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- μΉκ°λ°
- λ°λλΌjs
- uiμ»΄ν¬λνΈ
- μΉUI
- cssλ³μ
- νλ‘ νΈμλ
- cssμ λλ©μ΄μ
- μλ°μ€ν¬λ¦½νΈui
- μΈν°λ ν°λΈui
- μ€ν¬λ‘€μ λλ©μ΄μ
- λ°λλΌμ€ν¬λ¦½νΈ
- jsμ€ν¬λ‘€μ΄λ²€νΈ
- μλ°μ€ν¬λ¦½νΈμ»΄ν¬λνΈ
- μλ°μ€ν¬λ¦½νΈ
- UXλμμΈ
- μ½λ©μμ
- JavaScript
- μΉλμμΈ
- uiuxλμμΈ
- μΉμ κ·Όμ±
- μ κ·Όμ±
- λ€ν¬λͺ¨λUX
- λ€ν¬λͺ¨λν κΈ
- μΉuiλμμΈ
- λ€ν¬λͺ¨λ
- λ‘컬μ€ν 리μ§
- μΈν°λμ λμμΈ
- UIUX
- λ°μνμΉ
- μ€ν¬λ¦°λ¦¬λμ§μ
- Today
- Total
UI Code Lab
π λ€ν¬ λͺ¨λ μ ν μ, λΆλλ½κ³ μμ±λ λμ μΉ UI λ§λ€κΈ° λ³Έλ¬Έ
π λ€ν¬ λͺ¨λ μ ν μ, λΆλλ½κ³ μμ±λ λμ μΉ UI λ§λ€κΈ°
π―κΏμμ΄π 2025. 7. 28. 09:58
μ΅κ·Ό μΉμ¬μ΄νΈμμ λ€ν¬ λͺ¨λ μ ν κΈ°λ₯μ
λ¨μν νΈλ λλ₯Ό λμ΄
μ¬μ©μ κ²½ν(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 ꡬνλ²λ μκ°ν μμ μ λλ€.