본문 바로가기
HTML CSS

CSS 이론 채워 넣기 - 8. 트랜스폼(Transform)

by spare8433 2023. 9. 18.

1. 트랜스폼이란?

트랜스폼(Transform) 은 요소에 이동(translate), 회전(rotate), 확대축소(scale), 비틀기(skew) 효과를 부여하기 위한 함수를 제공한다.


단 애니메이션 효과를 제공하지는 않기 때문에 정의된 프로퍼티가 바로 적용되어 화면에 표시된다. 트랜스폼은 애니메이션 효과를 위해 사용하여야 하는 것은 아니지만 애니메이션 효과를 부여할 필요가 있다면 트랜지션이나 애니메이션과 함께 사용한다.



2. 2D 트랜스폼 (2D Transform)


transform function 설명 단위
translate(x,y) 요소의 위치를 X축으로 x만큼, Y축으로 y만큼 이동시킨다. px, %, em 등
translateX(n) 요소의 위치를 X축으로 x만큼 이동시킨다. px, %, em 등
translateY(n) 요소의 위치를 Y축으로 y만큼 이동시킨다. px, %, em 등
scale(x,y) 요소의 크기를 X축으로 x배, Y축으로 y배 확대 또는 축소 시킨다. 0과 양수
scaleX(n) 요소의 크기를 X축으로 x배 확대 또는 축소 시킨다. 0과 양수
scaleY(n) 요소의 크기를 Y축으로 y배 확대 또는 축소 시킨다. 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)



2.1 transform

변환함수를 프로퍼티값으로 쉼표없이 나열한다. 나열순서에 따라 차례대로 효과가 적용된다. %, px, top left, bottom right 등의 단위를 사용한다.


transform: func1 func2 func3 ...;


.translate {
  transform: translate(10px, 50px);
}
.scale {
  transform: scale(.75);
}
.skew {
  transform: skew(5deg, -20deg);
}
.rotate {
  transform: rotate(70deg);
}
.complex {
  transform: scale(.5) rotate(20deg);
}



2.2 transform-origin

요소의 기본기준점을 설정할 때 사용되며 기본값은 요소의 정중앙이다(50%,50%).


.scale1:hover {
  transition: transform 1s linear;
  transform-origin: 0 0;
  transform: scale(.5);
}
.scale2:hover {
  transition: transform 1s linear;
  transform-origin: 50% 50%;
  transform: scale(.5);
}
.scale3:hover {
  transition: transform 1s linear;
  transform-origin: 100% 100%;
  transform: scale(.5);
}
.translate:hover {
  transition: transform 1s linear;
  /*transform-origin: 100% 100%;*/
  transform: translate(10px, 10px);
}



3. 3D 트랜스폼 (3D Transform)

3D 트랜스폼은 프로퍼티값으로 변환함수(transform function)를 사용한다. 사용할 수 있는 변환함수는 다음과 같다.



transform function 설명 단위
translate3d(x,y,z) 요소의 위치를 X축으로 x만큼, Y축으로 y만큼 Z축으로 z만큼 이동시킨다. px, %, em 등
translateX(n) 요소의 위치를 X축으로 x만큼 이동시킨다. px, %, em 등
translateY(n) 요소의 위치를 Y축으로 y만큼 이동시킨다. px, %, em 등
translateZ(n) 요소의 위치를 Z축으로 z만큼 이동시킨다. px, %, em 등
scale3d(x,y) 요소의 크기를 X축으로 x배, Y축으로 y배, Z축으로 z배 확대 또는 축소 시킨다. 0과 양수
scaleX(n) 요소의 크기를 X축으로 x배 확대 또는 축소 시킨다. 0과 양수
scaleY(n) 요소의 크기를 Y축으로 y배 확대 또는 축소 시킨다. 0과 양수
scaleZ(n) 요소의 크기를 Z축으로 z배 확대 또는 축소 시킨다. 0과 양수
rotate3d(x,y,z) 요소를 X축으로 x각도, Y축으로 y각도, Z축으로 z각도 회전시킨다. +/- 각도(deg)
rotateX(x) 요소를 X축으로 x각도 회전시킨다. +/- 각도(deg)
rotateY(y) 요소를 Y축으로 y각도 회전시킨다. +/- 각도(deg)
rotateZ(z) 요소를 Z축으로 z각도 회전시킨다. +/- 각도(deg)



참고

https://poiemaweb.com/css3-transform