使用jQuery动画box-shadow属性的正确语法是什么?
$().animate({?:"0 0 5px #666"});
c86crjj01#
使用Edwin Martin的**jQuery plugin for shadow animation**,它扩展了.animate方法,您可以简单地使用“boxShadow”的正常语法,并且该- * 颜色 *,*x-和y-偏移 *,blur-radius 和 spread-radius 的每个方面都将被动画化。它支持多个阴影。
.animate
$(element).animate({ boxShadow: "0px 0px 5px 3px hsla(100, 70%, 60%, 0.8)" })
jQuery通过更改DOM元素的style属性来进行动画,这可能会导致特殊性的惊喜,并将样式信息移出样式表。我找不到CSS阴影动画的浏览器支持统计,但你可以考虑使用JS应用一个基于动画的 * 类 *,而不是直接处理动画。例如,您可以在样式表中定义框阴影动画:
style
@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代码中所做的事情:
animationend
element.classList.add('shadow-pulse') element.addEventListener('animationend', event => { element.classList.remove('shadow-pulse') // do something else... })
$(element).addClass('shadow-pulse') $(element).on('animationend', function(){ $(element).removeClass('shadow-pulse') // do something else... })
kxeu7u2r2#
如果您使用的是jQuery 1.4.3+,那么您可以利用添加的cssHooks代码。使用boxShadow钩子:https://github.com/brandonaaron/jquery-cssHooks/blob/master/boxshadow.js你可以这样做:
$('#box').animate({ 'boxShadowX': '10px', 'boxShadowY':'10px', 'boxShadowBlur': '20px' });
这个钩子还不能让你对颜色进行动画处理,但是我确信可以添加一些工作。示例:http://jsfiddle.net/petersendidit/w5aAn/
iyr7buue3#
如果你不想使用插件,可以用一点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动画的完整文档,你的向导begins here..
okxuctiv4#
我喜欢ShaneSauce解决方案!使用一个类代替一个ID,你可以使用jQuery addClass/delay/removeClass添加/删除任何元素的效果:
$('.error').each( function(idx, el){ $( el ) .addClass( 'highlight' ) .delay( 2000 ) .removeClass( 'highlight' ); });
olmpazwi5#
下面是一个不使用插件的例子:jQuery animated Box但它没有使用插件所带来的额外功能,但我个人喜欢看到(并理解)疯狂背后的方法。
5条答案
按热度按时间c86crjj01#
直接回答
使用Edwin Martin的**jQuery plugin for shadow animation**,它扩展了
.animate
方法,您可以简单地使用“boxShadow”的正常语法,并且该- * 颜色 *,*x-和y-偏移 *,blur-radius 和 spread-radius 的每个方面都将被动画化。它支持多个阴影。使用CSS动画
jQuery通过更改DOM元素的
style
属性来进行动画,这可能会导致特殊性的惊喜,并将样式信息移出样式表。我找不到CSS阴影动画的浏览器支持统计,但你可以考虑使用JS应用一个基于动画的 * 类 *,而不是直接处理动画。例如,您可以在样式表中定义框阴影动画:
然后,您可以使用本机
animationend
事件来同步动画的结束与您在JS代码中所做的事情:Vanilla JS:
jQuery:
kxeu7u2r2#
如果您使用的是jQuery 1.4.3+,那么您可以利用添加的cssHooks代码。
使用boxShadow钩子:https://github.com/brandonaaron/jquery-cssHooks/blob/master/boxshadow.js
你可以这样做:
这个钩子还不能让你对颜色进行动画处理,但是我确信可以添加一些工作。
示例:http://jsfiddle.net/petersendidit/w5aAn/
iyr7buue3#
如果你不想使用插件,可以用一点CSS来完成:
查看详情:http://jsfiddle.net/Z8E5U/
如果你想要CSS动画的完整文档,你的向导begins here..
okxuctiv4#
我喜欢ShaneSauce解决方案!使用一个类代替一个ID,你可以使用jQuery addClass/delay/removeClass添加/删除任何元素的效果:
olmpazwi5#
下面是一个不使用插件的例子:jQuery animated Box但它没有使用插件所带来的额外功能,但我个人喜欢看到(并理解)疯狂背后的方法。