ホームページ >ウェブフロントエンド >jsチュートリアル >jquery_jqueryでのanimateアニメーションの蓄積に対する解決策

jquery_jqueryでのanimateアニメーションの蓄積に対する解決策

WBOY
WBOYオリジナル
2016-05-16 17:20:361340ブラウズ

昨日、クラスメートが私に助けを求め、左右の写真を自動的に再生する簡単なアニメーション効果を作成したと言いました

コードをコピー コードは次のとおりです:

/* シームレス フォーカス画像*/
var _left = 770;
var left = -_left;//-770
function slideImg() {
if(left == -3080 || left == 0) {
_left = -_left; 🎜>}
$ ('.slidepics').animate({'left': left 'px'},1000);
left = left - _left;
tim = setTimeout(slideImg,5000) ;
}
slideImg();


コードをコピーします コードは次のとおりです。
I 見てみると、一見すると何の問題もありません。その後、彼は 1 か月間悩んでいた奇妙な問題について話しました。ウィンドウが最前面にあるときは問題ありませんでしたが、ウィンドウを最小化したり、他のウィンドウを参照したりすると、すぐに再生が表示されてしまうとのことでした。しばらくすると、再び正常になりました(つまり、問題ありません。Chrome には問題があり、Firefox にも問題があります)。

これまでこの問題に遭遇したことがなかったので、30分以上考えましたが、理解できませんでした。その後、以前に作成したメモを調べて、setTimeout が次のときの答えを見つけました。 Chromeブラウザでウィンドウが最前面にないときにアニメーションキューがたまり、最前面に戻ったときに突然爆発する可能性があるので、jqueryのstopメソッドを考えてみます。これにより、この要素のすべてのアニメーションが停止します。


コードをコピー コードは次のとおりです。
/* シームレス フォーカス画像*/
var _left = 770;
var left = -_left;/ /- 770
function slideImg() {
if(left == -3080 || left == 0) {
_left =
}
$('.slidepics' ).stop().animate({'left': left 'px'},1000);
left = left - _left(slideImg,5000); slideImg( );

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。