當前位置:編程學習大全網 - 源碼下載 - html和js carousel如何防止快速多次點擊造成的混亂?

html和js carousel如何防止快速多次點擊造成的混亂?

老的做法是用settimeout或者setinterval實現循環動畫,但是這樣會造成題目說,關閉頁面會造成混亂。

因為當頁面失去焦點時,瀏覽器不會再渲染頁面,但是settimeout/setinterval的請求不會停止,隊列會壹直堆動畫。當頁面再次獲得焦點時,動畫隊列已經堆了很多命令,會導致動畫混亂。

壹般來說,目前的做法是使用requestanimationframe函數,類似於settimeout/setinterval,只是requestanimationframe不接受時間參數,函數的執行頻率由瀏覽器的渲染幀數決定,從而實現動畫隊列由瀏覽器決定,避免動畫混淆。當然也可以用壹些現成的輪播插件,主體可以擁有百度。這裏通過對比例子說明settimeout和requestanimationframe的用法。

//使用setTimeout在控制臺循環輸出hello?世界

功能?fun(){

console.log('妳好?世界’);

setTimeout(function(){

fun();

},3000);

}

fun();//執行fun函數,每隔3000毫秒可以遞歸輸出hello。世界

//使用reqestanimationframe在控制臺循環輸出hello?世界

功能?fun(){

console.log('妳好?世界’);

requestAnimationFrame(function(){

fun();

})

}

Fun()//執行Fun函數,每隔3000毫秒可以遞歸輸出hello。世界

//requestAnimationFrame沒有時間參數,所以不能直接控制間隔。

//但是我們可以通過以下方法人為限制執行間隔。

功能?樂趣(最後壹次){

如果(新?日期()。getTime()?-?最後壹次?& gt?3000){

console.log('妳好?世界’);

requestAnimationFrame(function(){

好玩(新?日期()。getTime());

})

}否則{

requestAnimationFrame(function(){

樂趣(最後壹次)

});

}

}

好玩(新?日期()。getTime())

//這樣就可以為requestAnimationFrame設置間隔,每3000毫秒輸出壹次hello。世界

//很抱歉我偶爾用C和javaweb寫python,分號有點亂。

  • 上一篇:哪位幫忙壹下,把通達信的纏論分筆及中樞主圖指標公式 改成大智慧也可以用的
  • 下一篇:短域名生成源代碼
  • copyright 2024編程學習大全網