본문 바로가기

html & css3

[html/css] css animation 만들기

반응형

 

 

css 애니메이션은 자바스크립트를 모르더라도 간단하게 움직이는 애니메이션을 만들 수 있습니다. 

 

html

간단하게 눈이 될 부분과 움직이는 입모양이 될 부분으로 클래스를 따로 지정해줍니다

    <body id="loading1">
        <div class="wrap2">
            <div class="round">
                <div class="circle"></div>
                <div class="circle2"></div>
            </div>
            <div class="loading1">
                <div class="obj"></div>
                <div class="obj"></div>
                <div class="obj"></div>
                <div class="obj"></div>
                <div class="obj"></div>
                <div class="obj"></div>
                <div class="obj"></div>
                <div class="obj"></div>
            </div>
        </div>

 

css

#loading1{
    margin: 0;
    padding: 0;
}
.loading1{
    position:absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
    height: 40%;
    display:flex;
    align-items: center;
}
.obj{
    width: 6px;
    height: 40px;
    background: black;
    margin: 0 3px;
    border-radius: 10px;
    animation: loading 0.8s infinite;
}

@keyframes loading{
    0%{
        height: 0;
    }
    50%{
        height: 40px;
    }
    100%{
        height: 0;
    }
}
.round{
    position:absolute;
    top: 42%;
    left: 50%;
    width: 146px;
    height: 30px;
    transform: translate(-50%,-50%);
    justify-content: space-between;
}
.circle{
    position: absolute;
    width: 30px;
    height: 30px;
    border-radius: 30px;
    background: black;
}
.circle2{
    position: absolute;
    width: 30px;
    height: 30px;
    border-radius: 30px;
    background: black;
    margin-left: 80%;
}

 

 

animation의 다양한 속성들


animation-name :@keyframes 규칙을 이용하기 위해 @keyframes속성에서 지정한 애니메이션의 이름입니다. 
아래의 예제에서 loading이라는 이름을 주었습니다.  단, 숫자나 특수문자로 시작하는 이름은 지정할 수 없습니다.

animation-duration : 한 번 재생하는데 애니메이션이 얼마에 걸쳐 일어날지 시간을 설정합니다. s = seconds(보통 초 단위로 많이 설정합니다). 0이나 음수로 설정하면 재생되지 않습니다. 아래의 예제에서 0.8초를 주었으며, 뒤에 infinite를 입력함으로써 무한반복되도록 설정하였습니다. 

animation-delay : 언제 애니메이션이 시작될지 지정하는 속성입니다. 사용 가능한 단위는 초(s)와 밀리초(ms)가 있습니다. 

animation-direction : 애니메이션 재생 방향 속성입니다. 
from --> to (순방향) = normal
to  -->  from(역방향) = reverse

animation-iteration-count : 애니메이션 재생 횟수를 지정합니다. infinite 로 지정하여 무한히 반복할 수 있습니다.

animation-play-state : 애니메이션을 멈추거나 다시 시작하도록 재생 여부를 정의하는 속성입니다. running(기본값, 재생), paused(정지)

animation-timing-function : 중간 상태들의 전환을 어떤 시간간격으로 진행할지 지정합니다. (키프레임 사이의 단계별 재생속도)
ease, ease-in-out

@keyframes 과 animation 속기형


예시)
@keyframes loading{
    0%{
        height: 0;
    }
    50%{
        height: 60px;
    }
    100%{
        height: 0;
    }
}

애니메이션을 재생할 각 프레임의 스타일을 정의하는 것으로 from 속성이나 0% 속성에 설정한 스타일에서 출발해 to 속성이나 100% 속성에 설정한 스타일로 점차 바뀌면서 애니메이션이 재생됩니다.
키프레임은 애니메이션을 적용할 요소의 animation-name 을 정의하고 그 키프레임 코드 블럭에 재생할 프레임별 시간 비율을 작성합니다.

0% : 애니메이션의 시작 프레임
100% : 애니메이션의 마지막 프레임
from : 애니메이션의 시작 프레임으로 0%와 같습니다.
to : 애니메이션의 마지막 프레임으로 100%와 같습니다.
0%와 100% 사이에는 여러 개의 중간 값(%)을 설정해 프레임을 작성할 수 있습니다.

반응형