มีการโทรกลับเมื่อเสร็จสิ้นการเคลื่อนไหว CSS3 หรือไม่


92

มีวิธีใดบ้างในการใช้ฟังก์ชันเรียกกลับในกรณีของภาพเคลื่อนไหว css3 ในกรณีที่อนิเมชั่น Javascript เป็นไปได้ แต่ไม่พบวิธีใด ๆ ใน css3

วิธีหนึ่งที่ฉันเห็นคือเรียกใช้การเรียกกลับหลังจากระยะเวลาของภาพเคลื่อนไหว แต่นั่นไม่ได้ทำให้แน่ใจว่าจะถูกเรียกทันทีหลังจากที่ภาพเคลื่อนไหวจบลง จะขึ้นอยู่กับคิว UI ของเบราว์เซอร์ ฉันต้องการวิธีที่มีประสิทธิภาพมากขึ้น เบาะแสใด ๆ ?


อาจซ้ำกันของCallback ในการเปลี่ยน CSS
givanse

หากคุณต้องการดำเนินการ CSS ง่ายๆเช่นซ่อนองค์ประกอบหลังจากการเปลี่ยนแปลงบางทีคุณอาจไม่จำเป็นต้องเรียกกลับ แต่คุณสามารถแก้ปัญหาด้วยคีย์เฟรมของภาพเคลื่อนไหวแทนได้
Madmadi

คำตอบ:


132

ใช่มี. การโทรกลับเป็นเหตุการณ์ดังนั้นคุณต้องเพิ่มตัวฟังเหตุการณ์เพื่อจับมัน นี่คือตัวอย่างของ 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 สุดท้ายตอนนี้ใช้msdn.microsoft.com/en-us/library/ie/...animationend @Husky รหัสทำงานใน Chrome และ FF 14 ดู fiddle ที่อัปเดตjsfiddle.net/W3y7h
methodofaction

1
สำเนาstackoverflow.com/questions/9255279/…ซึ่งมีโซลูชันที่สมบูรณ์กว่า
vanthome

3

เป็นวิธีที่ง่ายสำหรับคุณที่จะโทรกลับที่ยังจัดการเปลี่ยน CSS3 / คุณสามารถในการใช้เบราว์เซอร์จะเป็นที่jQuery Plugin ตัวอย่าง:

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

การสาธิต JS Fiddle


1
คะแนนโบนัสสำหรับการแชร์ข้อมูลจำเพาะ API กับ jQuery animate แต่ยังคงใช้ประโยชน์จากความราบรื่นของการแสดงผลด้วยฮาร์ดแวร์ของภาพเคลื่อนไหว CSS เราเพิ่งแทนที่ jQuery animate ในทุกที่ด้วยสิ่งนี้
logan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.