CSS3 애니메이션 완료시 콜백이 있습니까?


91

CSS3 애니메이션의 경우 콜백 함수를 구현하는 방법이 있습니까? Javascript 애니메이션의 경우 가능하지만 css3에서 수행하는 방법을 찾지 못했습니다.

내가 볼 수있는 한 가지 방법은 애니메이션 지속 시간 후에 콜백을 실행하는 것이지만 애니메이션이 끝난 직후에 항상 호출되는 것을 보장하지는 않습니다. 브라우저 UI 대기열에 따라 다릅니다. 더 강력한 방법을 원합니다. 단서가 있습니까?



예를 들어 전환 후 요소를 숨기는 것과 같은 간단한 CSS 작업을 수행하려면 콜백이 필요하지 않고 대신 애니메이션의 키 프레임으로 문제를 해결할 수 있습니다.
— Madmadi

답변:


130

네, 있습니다. 콜백은 이벤트이므로이를 포착하려면 이벤트 리스너를 추가해야합니다. 다음은 jQuery를 사용한 예입니다.

$("#sun").bind('oanimationend animationend webkitAnimationEnd', function() { 
   alert("fin") 
});

또는 순수 js :

element.addEventListener("webkitAnimationEnd", callfunction,false);
element.addEventListener("animationend", callfunction,false);
element.addEventListener("oanimationend", callfunction,false);

라이브 데모 : http://jsfiddle.net/W3y7h/


3
IE10의 경우 'MSAnimationEnd'입니다 ( msdn.microsoft.com/en-us/ie/hh272902#_CSSAnimations 참조 )
— Martin Wittemann

6
그것은이다 transitionend,하지 animationend.

13
@MichaelJones 아니요, CSS3 전환 용입니다. 질문은 애니메이션에 관한 것이 었습니다.
— joshvermaire

4
@MartinWittemann IE10 final은 이제 animationend msdn.microsoft.com/en-us/library/ie/…를 사용합니다 . 코드가 크롬과 FF (14)의 작업을 수행 @Husky, 바이올린 업데이트를 참조하십시오 jsfiddle.net/W3y7h
— methodofaction

1
더 완전한 솔루션이있는 stackoverflow.com/questions/9255279/… 복제
— vanthome

3

CSS3 전환 / 브라우저 호환성을 처리하는 콜백을 수행하는 쉬운 방법은 jQuery Transit Plugin 입니다. 예:

//Pulsing, moving element
$("#element").click( function () {
    $('#element').transition({ opacity: 0, x: '75%' }, function () { $(this).transition({ opacity: 1, x: '0%' }).trigger("click"); });
});

JS 바이올린 데모


1
jQuery animate와 API 사양을 공유하지만 여전히 CSS 애니메이션의 하드웨어 렌더링 부드러움을 활용하는 것에 대한 보너스 포인트입니다. 우리는 거의 모든 곳에서 jQuery animate를 이것으로 대체했습니다.
— logan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.