Rumah > hujung hadapan web > tutorial css > Bagaimanakah saya boleh mencetuskan semula Animasi CSS WebKit Menggunakan JavaScript?

Bagaimanakah saya boleh mencetuskan semula Animasi CSS WebKit Menggunakan JavaScript?

Barbara Streisand
Lepaskan: 2024-11-30 12:29:13
asal
686 orang telah melayarinya

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

Mencetuskan semula Animasi CSS WebKit dengan JavaScript

Masalah

Animasi yang ditakrifkan menggunakan peraturan -webkit-animation hanya boleh dicetuskan sekali. Untuk mencetuskan animasi sekali lagi, anda memerlukan cara untuk menetapkannya semula selepas ia selesai.

Penyelesaian

Penyelesaian terletak pada penggunaan acara webkitAnimationEnd, yang dicetuskan apabila animasi CSS WebKit selesai. Dengan menambahkan pendengar acara pada elemen animasi, anda boleh mengesan apabila animasi tamat dan menetapkan semula sifatnya untuk membolehkannya dicetuskan semula.

Pelaksanaan

Plain 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.
};
Salin selepas log masuk

jQuery:

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

$('#button').click(function() {
  $element.css('webkitAnimationName', 'shake');
  // You may want to preventDefault here.
});
Salin selepas log masuk

Sokongan Penyemak Imbas Rentas:

Yang disediakan kod berfungsi khusus untuk penyemak imbas WebKit. Untuk menyokong pelayar lain, anda boleh menggunakan pustaka pengesanan ciri seperti ini:

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;
}());
Salin selepas log masuk

Dengan pustaka ini, anda boleh menggunakan kod berikut:

element.addEventListener(css3AnimationSupport.transition.end, function() {
  this.style.webkitAnimationName = '';
}, false);
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah saya boleh mencetuskan semula Animasi CSS WebKit Menggunakan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan