일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 조건부스타일
- es6
- useQueryClient
- 부모패딩
- 함수형프로그래밍
- 제어컴포넌트
- transition
- tailwindCSS
- BFC
- ㅡ
- react
- 문제해결
- DOM
- twoarrow
- 부모요소의 패딩 무시
- ignore padding
- alias설정
- 서초구보건소 #무료CPR교육
- vite
- debouncing
- accordian
- QueryClient
- Carousel
- BlockFormattingContext
- CustomHook
- 리액트
- ?? #null병합연산자
- parent padding
- createPortal
- 화살표2개
Archives
- Today
- Total
프론트엔드 첫걸음
CSS transform 으로 애니메이션 구현하기 본문
CSS transform 속성으로 요소에 회전(rotate), 좌표이동(translate), 크기조절(scale) 등의 효과 줄 수 있다.
translate 대신 margin 등의 레이아웃을 바꿔도 동작하지만 animation효과 위해 layout바꾸는 것은 성능을 저하시킨다.
브라우저가 그림그리는 순서
1. Render Tree만들기(parsing 및 style)
2. Layout잡기
3. Paint
4. composite 처리(transform , opacity 등)
margin 변경 하면 2번부터 다시 해야하지만, transform 변경하면 4번부터 다시 하면 됨.따라서 바뀐 layout 부터 렌더링하는것보다 바뀐 transform만 렌더링하는것이 빠르게 동작함
또한 transform 처리는 다른 쓰레드에서 처리해주므로 빠르게 동작함
"스타일 속성 중 position, width, height 등과 같이 기하적 변화를 유발하는 속성을 변경하면 레이아웃이 발생한다. transform을 사용한 엘리먼트는 레이어로 분리되기 때문에 영향받는 엘리먼트가 제한되어 레이아웃과 페인트를 줄일 수 있다. 그리고 합성만 발생시키기 때문에 애니메이션에서 사용 시 렌더링 속도가 향상할 수 있다. 때에 따라 하드웨어가 지원될 경우 GPU를 사용할 수 있으므로 성능이 빠르다. 예를 들어 left, top을 사용하면 모든 프레임마다 엘리먼트와 배경이 합성되어 많은 시간이 걸리므로, transform: translate()를 사용해야 한다."
애니메이션 구현 방법
1. @keyframse 정의
@keyframes textTrasnform{
0% {
transform : translateX(0px); /* 애니메이션이 0%만큼 동작시 */
}
50% {
transform : translateX(-20px); /* 애니메이션이 50%만큼 동작시 */
}
100% {
transform : translateX(20px); /* 애니메이션이 100%만큼 동작시 */
}
}
2. keyframes를 적용
.box:hover {
animation-name : textTransfrom; /* keyframes 명으로 지정한 애니메이션 명 */
animation-duration : 1s; /* 애니메이션 한 사이클 완료에 걸리는 시간 */
}
이 외 속성들 추가로 적용
animation-timing-function : cubic-bezier(0.1, 0.7, 1.0, 0.1); /* 애니메이션 진행방식 */
animation-delay: 1s; /* 지연시간 */
animation-iteration-count : 3; /* 재생 횟수*/
animation-play-state : paused; /* 애니메이션 실행할지 일시정지할지 설정 , 자바스크립트로 조정 */
animation-fill-mode : forwards; /*애니메이션 채우기 모드 - forward : 애니메이션 적용상태 유지*/
https://developer.mozilla.org/ko/docs/Web/CSS/animation
https://developer.mozilla.org/ko/docs/Web/CSS/transform
'개발 공부 > CSS' 카테고리의 다른 글
grid로 레이아웃 만들기 (0) | 2022.07.13 |
---|---|
[문제해결] flex 아이템의 width가 조정안될때 (0) | 2022.07.12 |
SASS 문법 - $변수명 , @mixin +@include, @extend, @use (0) | 2022.07.12 |
SASS 입문! SASS 개발 환경 설정 (0) | 2022.07.11 |
input file 버튼 스타일 바꾸기 - 2. 버튼의 속성 찾아서 스타일 바꾸기 (0) | 2022.07.11 |