jqueryでボックスシャドウをアニメーション化する正しい方法
-
29-09-2019 - |
質問
これは、アニメーション化するための正しい構文です ボックスシャドウ jqueryのあるプロパティ?
$().animate({?:"0 0 5px #666"});
解決
直接回答
エドウィン・マーティンの使用 Shadow AnimationのjQueryプラグイン, 、それが拡張されます .animate
方法、「Boxshadow」とそのすべてのファセットを使用して、通常の構文を単に使用できます - 色, 、 X-およびYオフセット, 、 Blur-radius と スプレッドラジウス - アニメーション化されます。複数の影のサポートが含まれています。
$(element).animate({
boxShadow: "0px 0px 5px 3px hsla(100, 70%, 60%, 0.8)"
});
代わりにCSSアニメーションを使用します
jQueryは変更してアニメーション化します style
DOM要素のプロパティは、スタイルシートからスタイル情報を特異性と動かして驚きを引き起こす可能性があります。
CSSシャドウアニメーションのブラウザサポート統計が見つかりませんが、jQueryを使用してアニメーションベースを適用することを検討する場合があります クラス アニメーションを直接処理する代わりに。たとえば、StyleSheetで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...
});
他のヒント
jQuery 1.4.3+を使用している場合は、追加されたCSShooksコードを活用できます。
Boxshadowフックを使用することにより: 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アニメーションに関する完全なドキュメントが必要な場合は、ウィザードリーへの道 ここから始まります。
Shanesauceソリューションが大好きです! IDのクラスInteadを使用すると、jQuery addclass/delay/removeclassを使用して任意の要素に効果を追加/削除できます。
$('.error').each( function(idx, el){
$( el )
.addClass( 'highlight' )
.delay( 2000 )
.removeClass( 'highlight' );
});
プラグインなしでそれを行う方法の例は次のとおりです。 jQueryアニメーションボックス しかし、プラグインの使用に伴う追加の機能はありませんが、私は個人的には狂気の背後にある方法を見たい(そして理解している)のが好きです。