Каков правильный синтаксис для анимации свойства box-shadow с помощью jQuery?
$().animate({?:"0 0 5px #666"});
Каков правильный синтаксис для анимации свойства box-shadow с помощью jQuery?
$().animate({?:"0 0 5px #666"});
Используя плагин Edwin Martin jQuery для теневой анимации, который расширяет метод .animate
, вы можете просто использовать обычный синтаксис с "boxShadow" и каждым его аспектом - цветом, смещением x- и y, радиусом размытия и разбросом. -радиус - оживляется. Включает поддержку нескольких теней.
$(element).animate({
boxShadow: "0px 0px 5px 3px hsla(100, 70%, 60%, 0.8)"
});
JQuery анимирует, изменяя свойство style
элементов DOM, что может вызывать сюрпризы со спецификой и перемещать информацию о стилях из ваших таблиц стилей.
Я не могу найти статистику поддержки браузера для теневой анимации CSS, но вы можете рассмотреть возможность использования jQuery для применения класса на основе анимации вместо непосредственной обработки анимации. Например, вы можете определить теневую анимацию bo x- в вашей таблице стилей:
@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...
});
Если вы используете jQuery 1.4.3+, тогда вы можете воспользоваться добавленным кодом cssHooks.
Используя hookShadow hook: https://github.com/brandonaaron/jquery-cssHooks/blob/master/boxshadow.js
Вы можете сделать что-то вроде этого:
$('#box').animate({
'boxShadowX': '10px',
'boxShadowY':'10px',
'boxShadowBlur': '20px'
});
Крючок не позволяет вам анимировать цвет, но я уверен, что некоторые работы могут быть добавлены.
Если вы не хотите использовать плагин, это можно сделать с помощью немного CSS:
#my-div{
background-color: gray;
animation: shadowThrob 0.9s infinite;
animation-direction: alternate;
-webkit-animation: shadowThrob 0.9s ease-out infinite;
-webkit-animation-direction: alternate;
}
@keyframes shadowThrob {
from {box-shadow: 0 0 30px 10px rgba(190,65,12, 0.9);}
to {box-shadow: 0 0 30px 10px rgba(190,65,12, 0.2);}
}
@-webkit-keyframes shadowThrob {
from {box-shadow: 0 0 30px 10px rgba(190,65,12, 0.9);}
to {box-shadow: 0 0 30px 10px rgba(190,65,12, 0.2);}
}
/*NOTE: The animation property is not supported in Internet Explorer 9 and earlier versions.*/
Проверьте это: http://jsfiddle.net/Z8E5U/
Если вам нужна полная документация по анимации CSS, здесь начинается ваш путь к wizardry .
Мне нравится решение ShaneSauce! Используйте класс с идентификатором, и вы можете добавить/удалить эффект для любого элемента, используя jQuery addClass/delay/removeClass:
$('.error').each( function(idx, el){
$( el )
.addClass( 'highlight' )
.delay( 2000 )
.removeClass( 'highlight' );
});
Вот пример того, как это сделать без плагина: jQuery анимированный блок Но у него нет дополнительной функциональности, которая поставляется с использование плагина, но мне лично нравится видеть (и понимать) метод безумия.