[UI/UX]coding 기초 - CSS- animation, object_fit, root_selector

DoheeΒ·2025λ…„ 1μ›” 6일
post-thumbnail

πŸ“Œanimation


λΈŒλΌμš°μ €κ°€ λ‘œλ”©λ˜λŠ” μˆœκ°„ μ• λ‹ˆλ©”μ΄μ…˜μ˜ ν•˜μœ„μ†μ„±κ³Ό @keyframesλͺ¨λ“ˆμ„ μ΄μš©ν•˜μ—¬ μ›€μ§μž„μ„ λ§Œλ“ λ‹€.

속성

-animation
: ν•˜μœ„μ†μ„±λ“€μ„ 곡백으둜 κ΅¬λΆ„ν•˜μ—¬ ν•œκΊΌλ²ˆμ— μ„ μ–Έν• λ•Œ μ‚¬μš©ν•œλ‹€.

-animation-delay
: μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ§€μ—°μ‹œκ°„μ„ μ§€μ •ν•œλ‹€. λ‹¨μœ„λŠ” sλ₯Ό μ‚¬μš©

-animation-direction
: μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ§„ν–‰ λ°©ν–₯을 μ„€μ •ν•œλ‹€.
↓ ↓ ↓
[-animation-direction 속성]

  1. alternate
    : μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ‹œμž‘μ§€μ μ—μ„œ λλ‚˜λŠ” μ§€μ μœΌλ‘œ μ΄λ™ν–ˆλ‹€κ°€
    λλ‚˜λŠ” μ§€μ μ—μ„œ λ‹€μ‹œ μ‹œμž‘μ§€μ μœΌλ‘œ μ΄λ™ν•œλ‹€.(from->to->from)
  2. normal
    : 기본값이며 μ‹œμž‘μ§€μ μ—μ„œ λλ‚˜λŠ” 지점을 μ΄λ™ν•˜λŠ” 것을 λ°˜λ³΅ν•œλ‹€.
  3. reverse
    : μ—­λ°©ν–₯으둜 움직인닀.
  4. alternate-reverse
    : μ—­λ°©ν–₯으둜 μ›€μ§μ˜€λ‹€κ°€ μ •λ°©ν–₯으둜 움직인닀.

- animation-iteration(반볡)-count
: μ• λ‹ˆλ©”μ΄μ…˜μ˜ 반볡 횟수λ₯Ό μ§€μ •ν•œλ‹€.
λ‹¨μœ„μ—†μ΄ 숫자만 μ“°κ±°λ‚˜ infinite(λ¬΄ν•œλ°˜λ³΅) 값을 μ“Έ 수 μžˆλ‹€.

- animation-name🌞
: ν•„μˆ˜ μ†μ„±μœΌλ‘œ μ• λ‹ˆλ©”μ΄μ…˜μ˜ 이름이 μ—†μœΌλ©΄ μ• λ‹ˆλ©”μ΄μ…˜μ΄ λ™μž‘ν•˜μ§€ μ•ŠλŠ”λ‹€.

- animation-play-state(진행상황)
: κ°’ runningμ΄λ‚˜ paused(멈좀)λ₯Ό μ‚¬μš©ν•˜μ—¬ μ• λ‹ˆλ©”μ΄μ…˜μ˜ μž¬μƒμƒνƒœλ₯Ό μ§€μ •ν•œλ‹€.

- animation-timing-function
: transition-timing-functionκ³Ό λ™μΌν•œ 값을 μ‚¬μš©ν•˜μ—¬ 속도 쑰절
(ease, ease-in, ease-out, linear, ease-in-out)

- animation-fill-mode
: backwardλŠ” κΈ°λ³Έκ°’μœΌλ‘œ μ• λ‹ˆλ©”μ΄μ…˜μ΄ λλ‚˜λ©΄ μ›λž˜μ˜ 초기 μœ„μΉ˜λ‘œ λŒμ•„μ˜¨λ‹€.
forwardλŠ” μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ’…λ£Œμ‹œμ μ˜ λͺ¨μŠ΅μ„ μœ μ§€ν•œλ‹€.

πŸ“Œ@keyframe λͺ¨λ“ˆ


-μ• λ‹ˆλ©”μ΄μ…˜μœΌλ‘œ νƒœκ·Έμ— μ›€μ§μž„μ„ μ„€μ •ν•˜κ³  @keyframes λͺ¨λ“ˆλ‘œ μ‹€μ œλ‘œ μ›€μ§μ΄λŠ” λ™μž‘μ„ μ‹€ν–‰ν•œλ‹€.

-@keyframes λͺ¨λ“ˆμ€ μ§€μ •λœ μ‹œκ°„μ•ˆμ— μ–΄λ–€ λ™μž‘μ„ λ§Œλ“€κ²ƒμΈμ§€λ₯Ό μ§€μ •ν•œλ‹€.

-@keyframes μ•ˆμ—μ„œ μ‹œκ°„μ— μ˜ν•΄ λ³€ν™”λ˜λŠ” 뢀뢄을 "μ„ νƒμž"둜 κ΅¬λΆ„ν•œλ‹€.
μ„ νƒμžλŠ” 0% λ˜λŠ” from이라고 μ“°λ©΄ μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ‹œμž‘μ§€μ (0초 지점)을 λ§ν•˜κ³ 
100% λ˜λŠ” to라고 μ“°λ©΄ μ• λ‹ˆλ©”μ΄μ…˜μ΄ λλ‚˜λŠ” 지점을 λ§ν•œλ‹€.

ex)
10초짜리 μ• λ‹ˆλ©”μ΄μ…˜μ—μ„œ 2μ΄ˆμ§€μ μ€ 20%
쀑간지점은 50%
μ‹œμž‘μ§€μ μ€ from
λλ‚˜λŠ” 지점은 to

[κΈ°λ³Έν˜•]

❗ keyframesκ°€ μ• λ‹ˆλ©”μ΄μ…˜λ³΄λ‹€ μœ„μ— 있으면 μž‘λ™μ•ˆν•¨β—

μ„ νƒμž{
animation : 속성1 속성2...;
}  
                  
@keyframes μ• λ‹ˆλ©”μ΄μ…˜ 이름{
from λ˜λŠ” 0% {μŠ€νƒ€μΌ 속성: κ°’; }
50% { μŠ€νƒ€μΌ 속성 : κ°’; }
to λ˜λŠ” 100% {μŠ€νƒ€μΌ 속성: κ°’; }
}

πŸ“Œwill-change


-will-change 속성은 λΈŒλΌμš°μ €μ—κ²Œ μš”μ†Œμ˜ μ˜ˆμƒ λ³€κ²½ 사항을 μ•Œλ €μ£ΌλŠ” 속성

-이 속성을 μ‚¬μš©ν•˜λ©΄ λΈŒλΌμš°μ €λŠ” μš”μ†Œκ°€ μ‹€μ œλ‘œ μŠ€νƒ€μΌ λ³€ν˜•μ΄ ν•„μš”ν• λ•Œ ν•„μš”ν•œ λ¦¬μ†ŒμŠ€λ₯Ό
사전에 μ΅œμ ν™” ν•˜μ—¬ μš”μ†Œμ˜ μŠ€νƒ€μΌ λ³€κ²½κ³Ό λ Œλ”λ§μ„ 더 λΉ λ₯΄κ³  μ΅œμ ν™”λœ λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•œλ‹€.

-will-change의 μ†μ„±κ°’μœΌλ‘œλŠ” μ• λ‹ˆλ©”μ΄μ…˜(ν‚€ν”„λ ˆμž„)κ³Ό transition λ˜λŠ” transform으둜 λ³€ν™”μ‹œν‚¬ μ†μ„±μ˜ 속성λͺ…을 μ‚¬μš©ν•œλ‹€.

[속성값]

  - auto : λ³€κ²½ μ˜ˆμ •μΈ 속성에 λŒ€ν•œ μ΅œμ ν™”
  
  - scroll-position : 슀크둀 μœ„μΉ˜μ— λŒ€ν•œ μ΅œμ ν™”
  
  - contents : μš”μ†Œ λ‚΄μš©μ˜ 변경에 λŒ€ν•œ μ΅œμ ν™”
  
  - 🌞opacity : 투λͺ…도 변경에 λŒ€ν•œ μ΅œμ ν™”
  
  - 🌞transform : λ³€ν˜•μ†μ„±μ— λŒ€ν•œ μ΅œμ ν™”
  
  - 🌞perspective : 원근감 변경에 λŒ€ν•œ μ΅œμ ν™”
  
  - left/top/right/bottom : μ’Œν‘œκ°’ 변경에 λŒ€ν•œ μ΅œμ ν™”
  
  - color/ background-color : 색상 변경에 λŒ€ν•œ μ΅œμ ν™”
  
  - all : λͺ¨λ“  변경에 λŒ€ν•œ μ΅œμ ν™”

πŸ“Œobject-fit


μ΄λ―Έμ§€λ‚˜ λΉ„λ””μ˜€ 같은 μ‹œκ° μš”μ†ŒλŠ” λ°˜μ‘ν˜•μœΌλ‘œ 크기가 λ°”λ€Œλ©΄ μ›λž˜ μ΄λ―Έμ§€λ‚˜ λΉ„λ””μ˜€μ˜ κ°€λ‘œ μ„Έλ‘œ λΉ„μœ¨μ„ κ·ΈλŒ€λ‘œ μœ μ§€ν•˜κΈ° μ–΄λ ΅λ‹€. object-fit을 μ‚¬μš©ν•˜λ©΄ 컨텐츠(μ΄λ―Έμ§€λ‚˜ λΉ„λ””μ˜€)의 κ°€λ‘œ μ„Έλ‘œ λΉ„μœ¨μ„ μœ μ§€ν•˜λ©΄μ„œ 해상도에 맞게 크기λ₯Ό μ‘°μ ˆν•  수 μžˆλ‹€.

[속성값]

- fill : κΈ°λ³Έκ°’μœΌλ‘œ μ»¨ν…μΈ μ˜ μ›λž˜ λΉ„μœ¨μ„ λ¬΄μ‹œν•˜κ³  μš”μ†Œμ˜ 전체 μ˜μ—­μ„ μ±„μš΄λ‹€.

 - contain : λΉ„μœ¨μ„ μœ μ§€ν•˜λ©΄μ„œ μš”μ†Œμ˜ 전체 μ˜μ—­μ— 맞좜 수 μžˆμ„ 만큼 ν™•λŒ€ν•œλ‹€.
             μ˜μ—­μ„ λͺ¨λ‘ μ±„μš°μ§€ λͺ»ν•  수 μžˆλ‹€.
             
 - cover : λΉ„μœ¨μ„ μœ μ§€ν•˜λ©΄μ„œ μš”μ†Œμ˜ 전체 μ˜μ—­μ— 맞좜 수 μžˆμ„ 만큼 ν™•λŒ€ν•œλ‹€.
           μ˜μ—­μ„ μ±„μšΈλ•Œ μ»¨ν…μΈ μ˜ 일뢀λ₯Ό 자λ₯Όμˆ˜λ„ μžˆλ‹€.
           
 - none : μ»¨ν…μΈ μ˜ μ›λž˜ 크기λ₯Ό μœ μ§€ν•œλ‹€.
 
 - scale-down : noneκ³Ό contain쀑 크기가 더 μž‘μ•„μ§€λŠ” κ°’μœΌλ‘œ μ„€μ •ν•œλ‹€.

:rootμ„ νƒμž


:rootμ„ νƒμžλŠ” λ¬Έμ„œμ˜ μ΅œμƒμœ„ μš”μ†Œ 즉, htmlνƒœκ·Έλ₯Ό λ§ν•˜λŠ” 것이닀.
:rootλŠ” μ›Ήλ¬Έμ„œμ—μ„œ μ‚¬μš©ν•  μŠ€νƒ€μΌλ“€μ„ μ „μ²΄μ μœΌλ‘œ μ„ μ–Έν•˜λŠ” κ³΅κ°„μœΌλ‘œ, μΌμ’…μ˜ 'μŠ€νƒ€μΌ κ°€μ΄λ“œ'둜 μ‚¬μš©ν•œλ‹€. :rootμ•ˆμ— μ‚¬μš©ν•  λ³€μˆ˜λ‘œ μ„ μ–Έν•˜λ©΄ 일관적인 λ””μžμΈμ„ μ‰½κ²Œ μœ μ§€ν•  수 μžˆλ‹€.
단, λ³€μˆ˜ 이름을 μ§€μ„λ•Œμ—λŠ” μ†Œλ¬Έμžλ‘œλ§Œ μ§€μ–΄μ•Όν•œλ‹€.

πŸ“Œcssλ³€μˆ˜


λ³€μˆ˜λž€ ν•„μš”ν• λ•Œλ§ˆλ‹€ 값을 μ €μž₯해놓고 μ‚¬μš©ν•˜λŠ” 데이터 그릇을 λ§ν•œλ‹€.
cssμ—μ„œ μ‚¬μš©ν•˜λŠ” λ³€μˆ˜λŠ” 일관적인 λ””μžμΈμ„ μœ μ§€ν•˜κΈ° μœ„ν•΄ 미리 μ›Ή λ¬Έμ„œμ—μ„œ μ‚¬μš©ν•  μŠ€νƒ€μΌμ— 이름을 λΆ™μ—¬μ„œ μ €μž₯ν•˜λŠ” 역할을 ν•œλ‹€.

[κΈ°λ³Έν˜•]

:root{
 --λ³€μˆ˜μ΄λ¦„ : κ°’;
 }

πŸ“Œvar(--λ³€μˆ˜μ΄λ¦„)

λ³€μˆ˜μ— μ €μž₯ν–ˆλ˜ 값을 ν‘œμ‹œν•˜λŠ” ν•¨μˆ˜μ΄λ‹€.

[κΈ°λ³Έν˜•]

μ„ νƒμž{
color : var(--λ³€μˆ˜μ΄λ¦„);
}

0개의 λŒ“κΈ€