본문으로 바로가기

horizontal Bounce Arrow Animation

category StyleSheet/CSS 2017. 2. 16. 09:07

Comma separated @keyframe rule

@keyframe 은 백분율로 애니메이션 상태를 지정할 수 있습니다.

여기서 더 나아가 바운스 애니메이션을 구현하는데 있어서 콤마(,)를 구분자로 키프레임을 좀 더 간결하게 작성할 수 있는 방법에 대해 알아보도록 합니다.




Source

See the Pen Comma separated @keyframe rule by jaeheekim (@jaehee) on CodePen.



@keyframe

위의 소스에 키프레임은 간결하게 작성되어 있습니다. 위 해당 키프레임을 아래와 같이 작성할 수도 있습니다.

css
@-webkit-keyframes horizontalBounce {
	0% {
		-webkit-transform: translateX(0);
	}
	10% {
		-webkit-transform: translateX(0);
	}
	20% {
		-webkit-transform: translateX(10px)
	}
	30% {
		-webkit-transform: translateX(0);
	}
	40% {
		-webkit-transform: translateX(10px);
	}
	50% {
		-webkit-transform: translateX(0);
	}
	60% {
		-webkit-transform: translateX(10px);
	}
	70% {
		-webkit-transform: translateX(0);
	}
	80% {
		-webkit-transform: translateX(10px);
	}
	90% {
		-webkit-transform: translateX(0);
	}
	100% {
		-webkit-transform: translateX(0);
	}
}

위 소스는 코드펜이 작성되어 있는 키프레임보다 좀 더 복잡해 보입니다.

이 키프레임의 백분율에 대한 스타일은 X축으로 0.5s 마다 10px 이동했다가 0px 로 다시 돌아오는 수평으로 된 바운스 스타일입니다.

해당 키프레임의 스타일중에 translateX(0),translateX(10px) 의 백분율이 반복되는 것을 확인하실 수 있습니다.

이를 더 간결하게 작성하기 위해서는 아래와 같이 콤마(,)를 구분자로 선언하여 정의할 수 있습니다.

css
@-webkit-keyframes horizontalBounce {
	0%, 10%, 30%, 50%, 70%, 90%, 100% {
		-webkit-transform: translateX(0);
		transform: translateX(0);
	}
	
	20%, 40%, 60%, 80% {
		-webkit-transform: translateX(10px);
		transform: translateX(10px);
	}
}

참고로 0% ~ 10% 에 translateX(0) 90% ~ 100% 에 translateX(0) 이 정의된 이유는 애니메이션을 무한 반복시키면서 시각적으로 delay 를 구현한 것처럼 움직이지 않도록 스타일을 정의한 것입니다.



Jaehee's WebClub


'StyleSheet > CSS' 카테고리의 다른 글

Animation Ribbon  (0) 2017.02.17
애니메이션 검색 박스(Animated Search Box)  (0) 2017.02.17
CSS3 gradient 를 이용한 줄무늬 배경 만들기  (0) 2017.02.08
CSS3 : -webkit-animation 알아보기  (0) 2017.01.24
Pure CSS Tabs  (0) 2016.12.12