Heim > Web-Frontend > CSS-Tutorial > Wie kann ich WebKit-CSS-Animationen mithilfe von JavaScript erneut auslösen?

Wie kann ich WebKit-CSS-Animationen mithilfe von JavaScript erneut auslösen?

Barbara Streisand
Freigeben: 2024-11-30 12:29:13
Original
661 Leute haben es durchsucht

How Can I Re-trigger WebKit CSS Animations Using JavaScript?

Erneutes Auslösen von WebKit-CSS-Animationen mit JavaScript

Problem

Animationen, die mit der Regel -webkit-animation definiert wurden, können nur einmal ausgelöst werden. Um die Animation erneut auszulösen, benötigen Sie eine Möglichkeit, sie nach Abschluss zurückzusetzen.

Lösung

Die Lösung liegt in der Verwendung des webkitAnimationEnd-Ereignisses, das ausgelöst wird, wenn eine WebKit-CSS-Animation beendet ist. Durch das Hinzufügen eines Ereignis-Listeners zum animierten Element können Sie erkennen, wann die Animation endet, und ihre Eigenschaften zurücksetzen, damit sie erneut ausgelöst werden kann.

Implementierung

Einfach JavaScript:

var element = document.getElementById('box');

element.addEventListener('webkitAnimationEnd', function() {
  this.style.webkitAnimationName = '';
}, false);

document.getElementById('button').onclick = function() {
  element.style.webkitAnimationName = 'shake';
  // You may want to preventDefault here.
};
Nach dem Login kopieren

jQuery:

var $element = $('#box').bind('webkitAnimationEnd', function() {
  this.style.webkitAnimationName = '';
});

$('#button').click(function() {
  $element.css('webkitAnimationName', 'shake');
  // You may want to preventDefault here.
});
Nach dem Login kopieren

Cross-Browser-Unterstützung:

Die bereitgestellten Code funktioniert speziell für WebKit-Browser. Um andere Browser zu unterstützen, können Sie eine Funktionserkennungsbibliothek wie diese verwenden:

var css3AnimationSupport = (function() {
  var div = document.createElement('div'),
    divStyle = div.style,
    support = {
      transition:
        divStyle.MozTransition === '' ? { name: 'MozTransition', end: 'transitionend' } :
        // Will ms add a prefix to the transitionend event?
        (divStyle.MsTransition === '' ? { name: 'MsTransition', end: 'msTransitionend' } :
        (divStyle.WebkitTransition === '' ? { name: 'WebkitTransition', end: 'webkitTransitionEnd' } :
        (divStyle.OTransition === '' ? { name: 'OTransition', end: 'oTransitionEnd' } :
        (divStyle.transition === '' ? { name: 'transition', end: 'transitionend' } :
        false))),
      transform:
        divStyle.MozTransform === '' ? 'MozTransform' :
        (divStyle.MsTransform === '' ? 'MsTransform' :
        (divStyle.WebkitTransform === '' ? 'WebkitTransform' :
        (divStyle.OTransform === '' ? 'OTransform' :
        (divStyle.transform === '' ? 'transform' :
        false))))
    };
  support.transformProp = support.transform.name.replace(/([A-Z])/g, '-').toLowerCase();
  return support;
}());
Nach dem Login kopieren

Mit dieser Bibliothek können Sie den folgenden Code verwenden:

element.addEventListener(css3AnimationSupport.transition.end, function() {
  this.style.webkitAnimationName = '';
}, false);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich WebKit-CSS-Animationen mithilfe von JavaScript erneut auslösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage