ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • animation
    프로그래밍/HTML&CSS 2022. 9. 20. 19:26
    728x90

    animation은 transition보다 더 쉽게 애니메이션 효과를 만들 수 있는 속성이다. animation은 연속적인 장면들(변화하는 지점)을 만드는 방법을 사용하며 이 연속된 지점들을 키프레임을 통해 지정할 수 있다. 먼저 @keyframes를 지정해주고 animation 속성으로 애니메이션 시간, 반복, 순방향 역방향 등을 정한다.

     

     

    @keyframes

    애니메이션의 장면들을 순서와 함께 지정하고 모아놓은 집합체라고 볼 수 있다.

    @keyframes <이름> {
    	<선택자> { <스타일> }
    }
    @keyframes moving {
        from {
            width: 200px;
            background-color: gold;
            opacity: 0.5; /*투명도*/
            transform: scale(0.5) rotate(30deg);
        }
        to {
            width: 400px;
            background-color: greenyellow;
            opacity: 1;
            transform: scale(1) rotate(0deg);
        }
    }

    위 예시처럼 처음(from)과 끝(to)을 지정해줄 수 도 있고 그 사이 과정을 %를 활용하여 1%, 2%, … 100% 까지 지정할 수 도 있다.

     

     

    animation 속성

    종류 설명 세부 속성값
    animation-name 애니메이션 이름을 설정 키프레임 이름
    animation-fill-mode 애니메이션을 어떻게 처리할지 설정 forwards
    (키프레임 100% 도달 시 마지막 키프레임 유지)
    animation-direction 애니메이션의 진행방향을 정하는 속성 reverse(역방향), | alternate(정방행 후 역방향) |
    reverse-alternate(역방향 후 정방향)
    animation-iteration-count 애니메이션이 몇번 반복될지 설정 infinite(무한) | 숫자
    animation-duration 애니메이션이 일어나는 시간 설정 시간
    animation-timeing-function 애니메이션의 시작, 중간 ,끝에서 속도를 설정 linear | ease | ease-in | ease-out | ease-in-out
    .box {
        animation-name: moving;
        animation-duration: 3s;
        animation-iteration-count: infinite;
        animation-direction: alternate;
    }

     

    이런 식으로 표현이 가능하고 animation 속성만 사용하여 단축시킬 수 있다. 위 코드를 animation만 활용하여 표현한다면,

    .box {
        animation: moving 3s infinite alternate;
    }

    이렇게도 가능하다.

     

    위 애니메이션을 결과로 보자면, 아래 사진과 같이 이러한 형태로 반복하는 것을 확인할 수 있다. 애니메이션 예제는 직접 해봄으로써 결과를 확인해보기를 추천한다.

     

    728x90

    '프로그래밍 > HTML&CSS' 카테고리의 다른 글

    text-overflow  (0) 2022.09.21
    transition  (0) 2022.09.19
    벤더 프리픽스(vender prefix)  (0) 2022.09.18
    transform  (0) 2022.09.18
    시맨틱 태그  (0) 2022.09.17

    댓글

Designed by Tistory.