transform

kirin.logΒ·2021λ…„ 4μ›” 17일
0
post-custom-banner

πŸŽƒ transform

πŸ‘‰ 트랜슀폼(Transform)은 μš”μ†Œμ— 이동(translate), νšŒμ „(rotate), ν™•λŒ€μΆ•μ†Œ(scale), λΉ„ν‹€κΈ°(skew) 효과λ₯Ό λΆ€μ—¬ν•˜κΈ° μœ„ν•œ ν•¨μˆ˜λ₯Ό μ œκ³΅ν•œλ‹€.

νŠΈλžœμ§€μ…˜(transition)은 CSS μŠ€νƒ€μΌ 변경을 λΆ€λ“œλŸ½κ²Œ ν‘œν˜„ν•˜κΈ° μœ„ν•΄ duration(μ§€μ†μ‹œκ°„)을 λΆ€μ—¬ν•˜μ—¬ 속도λ₯Ό μ‘°μ ˆν•œλ‹€.

μ• λ‹ˆλ©”μ΄μ…˜(animation)은 ν•˜λ‚˜μ˜ 쀄거리(@keyframes)λ₯Ό κ΅¬μ„±ν•˜μ—¬ 쀄거리 λ‚΄μ—μ„œ μ„ΈλΆ€ μ›€μ§μž„μ„ μ‹œκ°„ 흐름 λ‹¨μœ„λ‘œ μ œμ–΄ν•˜μ—¬ μš”μ†Œμ˜ μ›€μ§μž„μ„ ν‘œν˜„ν•œλ‹€.

트랜슀폼(Transform)은 μš”μ†Œμ— 이동(translate), νšŒμ „(rotate), ν™•λŒ€μΆ•μ†Œ(scale), λΉ„ν‹€κΈ°(skew) 효과λ₯Ό λΆ€μ—¬ν•˜κΈ° μœ„ν•œ ν•¨μˆ˜λ₯Ό μ œκ³΅ν•œλ‹€. 단 μ• λ‹ˆλ©”μ΄μ…˜ 효과λ₯Ό μ œκ³΅ν•˜μ§€λŠ” μ•ŠκΈ° λ•Œλ¬Έμ— μ •μ˜λœ ν”„λ‘œνΌν‹°κ°€ λ°”λ‘œ μ μš©λ˜μ–΄ 화면에 ν‘œμ‹œλœλ‹€. νŠΈλžœμŠ€νΌμ€ μ• λ‹ˆλ©”μ΄μ…˜ 효과λ₯Ό μœ„ν•΄ μ‚¬μš©ν•˜μ—¬μ•Ό ν•˜λŠ” 것은 μ•„λ‹ˆμ§€λ§Œ μ• λ‹ˆλ©”μ΄μ…˜ 효과λ₯Ό λΆ€μ—¬ν•  ν•„μš”κ°€ μžˆλ‹€λ©΄ νŠΈλžœμ§€μ…˜μ΄λ‚˜ μ• λ‹ˆλ©”μ΄μ…˜κ³Ό ν•¨κ»˜ μ‚¬μš©ν•œλ‹€.


πŸŽ… transform 속성

  • μ†μ„±κ°’μœΌλ‘œ λ³€ν™˜ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€.

❗ λ§Œμ•½ ν•˜λ‚˜μ˜ νƒœκ·Έμ— μ—¬λŸ¬κ°œμ˜ transform λ³€ν™˜ν•¨μˆ˜(translate, scale λ“±) λ₯Ό μ μš©ν•˜κ³  μ‹Άλ‹€λ©΄, λ³€ν™˜ν•¨μˆ˜λ₯Ό ν”„λ‘œνΌν‹°κ°’μœΌλ‘œ μ‰Όν‘œμ—†μ΄ λ‚˜μ—΄ν•œλ‹€. λ‚˜μ—΄μˆœμ„œμ— 따라 μ°¨λ‘€λŒ€λ‘œ νš¨κ³Όκ°€ μ μš©λœλ‹€.

/* μ˜ˆμ‹œ */

transform: scale(1) rotate(0) translateX(30px);
transform μ†μ„±νš¨κ³Όμ„€λͺ…λ‹¨μœ„
translate(x,y)μ΄λ™νš¨κ³Όμš”μ†Œμ˜ μœ„μΉ˜λ₯Ό XμΆ•μœΌλ‘œ x만큼, YμΆ•μœΌλ‘œ y만큼 이동px, %, em λ“±
translateX(n)μ΄λ™νš¨κ³Όμš”μ†Œμ˜ μœ„μΉ˜λ₯Ό XμΆ•μœΌλ‘œ n만큼 이동px, %, em λ“±
translateY(n)μ΄λ™νš¨κ³Όμš”μ†Œμ˜ μœ„μΉ˜λ₯Ό YμΆ•μœΌλ‘œ n만큼 이동px, %, em λ“±
--------------------------------------------------------------------------------------------------------------------
scale(x,y)ν™•λŒ€/μΆ•μ†Œ νš¨κ³Όμš”μ†Œμ˜ 크기λ₯Ό XμΆ•μœΌλ‘œ xλ°°, YμΆ•μœΌλ‘œ yλ°° ν™•λŒ€ λ˜λŠ” μΆ•μ†Œ0κ³Ό μ–‘μˆ˜
scaleX(n)ν™•λŒ€/μΆ•μ†Œ νš¨κ³Όμš”μ†Œμ˜ 크기λ₯Ό XμΆ•μœΌλ‘œ nλ°° ν™•λŒ€ λ˜λŠ” μΆ•μ†Œ0κ³Ό μ–‘μˆ˜
scaleY(n)ν™•λŒ€/μΆ•μ†Œ νš¨κ³Όμš”μ†Œμ˜ 크기λ₯Ό YμΆ•μœΌλ‘œ nλ°° ν™•λŒ€ λ˜λŠ” μΆ•μ†Œ0κ³Ό μ–‘μˆ˜
--------------------------------------------------------------------------------------------------------------------
skew(x-angle,y-angle)λΉ„ν‹€κΈ° νš¨κ³Όμš”μ†Œλ₯Ό XμΆ•μœΌλ‘œ x κ°λ„λ§ŒνΌ, YμΆ•μœΌλ‘œ y κ°λ„λ§ŒνΌ κΈ°μšΈμΈλ‹€+/- 각도(deg)
skewX(x-angle)λΉ„ν‹€κΈ° νš¨κ³Όμš”μ†Œλ₯Ό XμΆ•μœΌλ‘œ x κ°λ„λ§ŒνΌ κΈ°μšΈμΈλ‹€.+/- 각도(deg)
skewY(y-angle)λΉ„ν‹€κΈ° νš¨κ³Όμš”μ†Œλ₯Ό YμΆ•μœΌλ‘œ y κ°λ„λ§ŒνΌ κΈ°μšΈμΈλ‹€.+/- 각도(deg)
--------------------------------------------------------------------------------------------------------------------
rotate(angle)νšŒμ „νš¨κ³Όμš”μ†Œλ₯Ό angle만큼 νšŒμ „+/- 각도(deg)
/* translate */
.translate_div {
    transform: translate(10px, 50px);  /* μœ„μΉ˜λ₯Ό 각 10px, 50px만큼 이동 */
  }
/* 
❗ translate() 값이 ν•˜λ‚˜λ§Œ μžˆμ„ κ²½μš°μ—λŠ” κ°€λ‘œ λ°©ν–₯ μ΄λ™λ§Œμ„ λ‚˜νƒ€λ‚΄λ©°, μ„Έλ‘œ λ°©ν–₯ 이동은 μ—†λ‹€κ³  간주함 
❗ 기본기쀀점은 μš”μ†Œμ˜ 정쀑앙이닀 (50%, 50%) = transform-origin
*/  



/* scale */ 
.scale_div {
    transform: scale(.75);   /* 0.75λ°° 크기 λ³€κ²½ */
  }

.scale_div:hover {
    transform: scale(1.0);   /* hoverμ‹œ 크기 λ³€κ²½ 효과 */
  }



/* skew */ 
.skew_div {
    transform: skew(5deg, -20deg);
  }

.skew_div:hover {
    transition: transform 1s linear;
    transform: skew(0, 0);
  }



/* rotate */ 
.rotate_div {
    transform: rotate(70deg);
    transition-duration: 2s;



/* μ—¬λŸ¬κ°œμ˜ λ³€ν™˜ ν•¨μˆ˜λ₯Ό μ μš”ν•  λ–„(μ‰Όν‘œ 없이 λ‚˜μ—΄ν•˜κΈ°) */ 
.complex {
    transform: scale(.5) rotate(20deg);
  }

.complex:hover {
    transition: transform 1s linear;
    transform: scale(1) rotate(0);
  } 

https://webclub.tistory.com/619

profile
boma91@gmail.com
post-custom-banner

0개의 λŒ“κΈ€