Прямой ответ
Используя плагин Edwin Martin jQuery для теневой анимации , который расширяет метод .animate
, вы можете просто использовать обычный синтаксис с "boxShadow""и каждый аспект этого - цвет , смещение по оси x и y , радиус размытия и радиус распространения -получает анимацию.Он включает поддержку нескольких теней.
$(element).animate({
boxShadow: "0px 0px 5px 3px hsla(100, 70%, 60%, 0.8)"
});
Использование CSS-анимации вместо
jQuery анимирует, изменяя свойство style
элементов DOM, что может вызывать неожиданности со спецификой и стилем движенийинформация из ваших таблиц стилей.
Я не могу найти статистику поддержки браузера для теневой анимации CSS, но вы можете рассмотреть возможность использования jQuery для применения класса на основе анимации вместо непосредственной обработки анимации.Например, вы можете определить анимацию box-shadow в вашей таблице стилей:
@keyframes shadowPulse {
0% {
box-shadow: 0px 0px 10px 0px hsla(0, 0%, 0%, 1);
}
100% {
box-shadow: 0px 0px 5px 0px hsla(0, 0%, 0%, 0);
}
}
.shadow-pulse {
animation-name: shadowPulse;
animation-duration: 1.5s;
animation-iteration-count: 1;
animation-timing-function: linear;
}
Затем вы можете использовать собственное событие animationend
для синхронизации конца анимации с тем, что вы делали в своем коде JS:
$(element).addClass('shadow-pulse');
$(element).on('animationend', function(){
$(element).removeClass('shadow-pulse');
// do something else...
});