트랜스폼 (transform)
요소의 이동, 회전, 확대, 축소, 비틀기 등의 효과를 부여하기 위한 함수를 제공.
transform 속성에 원하는 function들을 값으로 전달하면 됨.
transform-origin : 요소의 기준점을 설정. 기본적으로는 50%, 50% (center)
transform 속성의 skew()를 사용하는 도중 X축과 Y축을 동시에 같이 비틀면 3D 효과처럼 나타낼 수 있음.
사용법
div{ transform: rotate(90deg) scale(1.5) translate(10px, 10px) skew(10deg) // 90˚회전, 1.5배 확대, 오른쪽으로 10px이동, 아래쪽으로 10px이동, 10˚비틀기 }
트랜지션 (transition)
트랜지션은 CSS 속성은 변경할 때 변화하는 그 과정을 조절하는 방법을 제공한다.
트랜지션의 특징
transition은 자동으로 발동되지 않는다.
가상 클래스 선택자 또는 JS등의 액션에 의해 발동된다.
자동 발동을 원하면 CSS 애니메이션을 사용한다.
모든 CSS 속성이 transition이 가능한 것은 아니다.
사용법
div{ transition: width 1s linear 3s; // width가 변하는 과정을, 1초동안, 일정한 속도로, 3초있다가 실행 }
설명
transition: property duration timing-function delay;
transition속성을 상세하게 나누어서 작성할 수도 있다.
transition-property : 변화를 적용할 CSS속성
transition-duration : 변화가 시작된 시점부터 끝날 시점까지의 시간을 지정
transition-timing-function : 변화 속도의 패턴을 지정
transition-delay : 변화를 시작할 시간 지정
애니메이션 (animation)
단순히 요소의 프로퍼티 변화로 동작하는 transition과 달리, 애니메이션 속성은 하나의 줄거리를 구성하고 줄거리 내에서 세부 움직임을 시간 흐름 단위로 제어하며 전체 줄거리의 재생과 정지, 반복까지 제어할 수 있다.
일반적으로 JS를 이용한 애니메이션보다 더 나은 렌더링 성능을 가진다고 알려졌지만, 경우에 따라 다르다.
비교적 작은 효과나 CSS만으로 충분한 효과를 볼 수 있는가VS 바운스, 중지, 되감기 등의 고급 효과가 필요한가 (JS로)
transition에 비해 훨씬 디테일한 조정(움직임 중 hover시 정지 등)이 더 쉽고 용이하다.
사용법
div{ animation: ani 10s infinite; // ani라는 이름을 가진 애니메이션을 실행, 10초동안, 무한반복 } @keyframes ani{ 0% {width: 0%;} 100% {width: 100%;} }
설명
animation: name duration timing-function delay iteration-count direction fill-mode play-state;
animation속성 또한 상세하게 나누어서 작성할 수도 있다.
animation-name : 애니메이션의 이름
animation-delay : 애니메이션을 시작할 시간 지정
animation-direction : 애니메이션이 종료되고 처음부터 다시 실행할지, 역방향으로 진행할지 지정
animation-iteration-count : 애니메이션이 몇 번 반복될지 지정 (infinite로 지정하면 무한반복)
animation-play-state : 애니메이션을 멈추거나 다시 시작할 수 있음.
animation-timing-function : 중간 상태들의 속도패턴을 지정.
animation-fill-mode : 애니메이션이 시작되기 전이나 끝나고 어떤 값이 적용될지 지정