2013-06-09 20 views
6

Có phải thời gian đồng bộ hóa javascript (thời gian chờ, khoảng thời gian) và css (hoạt ảnh, thời gian trễ) không?Đồng bộ hóa thời gian javascript và css?

Ví dụ:

#anim1 { 
animation: anim1 10s linear; 
display: none; 
} 

anim1.style.display = "block" ; 
setTimeout(function() { 
anim2.style.webkitAnimation= 'anim2 10s linear'; 
}, 10000); 

sẽ anim2 được chính xác kích hoạt vào cuối anim1? Nó có khác nhau tùy thuộc vào trình duyệt không? Trong trường hợp này, tôi quan tâm nhiều hơn đến việc tập trung vào webkit.

Lưu ý rằng anim1 được kích hoạt qua javascript để tránh tải thời gian không nhất quán.

NB: Đây là câu hỏi lý thuyết, mã trên là minh hoạ và bạn không được sử dụng ở nhà vì có cách thức thích hợp hơn để làm như vậy.

Trả lời

4

Theo như tôi biết, không có bảo đảm. Tuy nhiên, có những sự kiện mà bạn có thể nghe;

anim1.addEventListener('animationend',function(){ 
    anim2.style.webkitAnimation= 'anim2 10s linear'; 
} 

Lưu ý rằng vì đây là mới, vẫn còn tiền tố của nhà cung cấp bạn cần tính đến; webkitAnimationEndoanimationend dành cho Webkit và Opera.

Cũng như câu trả lời ban đầu của tôi (sai) được đề xuất, có transitionend (có tiền tố tương tự) nếu bạn muốn sử dụng chuyển tiếp CSS thay vì hoạt ảnh.

+1

@Kyslik đúng, nhưng câu trả lời hay nhất tôi có thể đưa ra là "Tôi nghi ngờ nó". Vì vậy, đây là những gì tôi sẽ làm gì để giải quyết vấn đề cụ thể đó. Đó là tidier quá; thời gian có thể được thay đổi mà không mạo hiểm sự mâu thuẫn. – Dave

+1

Tôi đã xem xét thông số kỹ thuật và không thể thấy bất kỳ điều gì đề xuất thời gian JavaScript và CSS theo bất kỳ cách nào có liên quan. Tôi hy vọng nó không xác định, nhưng nó là một câu hỏi thú vị. – Dave

+0

Cảm ơn, được đánh dấu là được chấp nhận vì câu trả lời "Tôi nghi ngờ". Tôi vẫn rất ngạc nhiên về việc thiếu công bố trong tự nhiên về điều này. – kursus

2

Đây là cách sai để thực hiện việc này. Không có bất kỳ đảm bảo rằng họ sẽ được đồng bộ, mặc dù nó có khả năng họ sẽ được gần gũi.

Sự kiện được cung cấp để bắt đầu, kết thúc lặp lại hoạt ảnh.

http://developer.apple.com/library/safari/#documentation/AudioVideo/Reference/WebKitAnimationEventClassReference/WebKitAnimationEvent/WebKitAnimationEvent.html chi tiết các thông tin này.

Sử dụng mã như:

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

liên kết với nó.

+1

có thể là gợi ý tốt để thực hiện loại hoạt ảnh này nhưng câu hỏi thực là: 'Đồng bộ hóa JavaScript và CSS?' – Kyslik

+0

Thật vậy, cảm ơn câu trả lời của bạn nhưng mã này là một minh họa lý thuyết hơn một ví dụ thực tế. – kursus