js實現無縫滾動雙圖切換效果
更新時間:2019年07月09日 10:55:46 作者:Zerofishcoding
這篇文章主要為大家詳細介紹了js實現無縫滾動雙圖切換效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文記錄的是在html中寫兩個img實現多張圖片的無縫滾動,供大家參考,具體內容如下
html結構如下:
<div class="wrap"> <ul class="list"> <li> <img src="img/img0.png"> </li> <li> <img src="img/img1.png"> </li> </ul> <a href="javascript:;" class="prev">prev</a> <a href="javascript:;" class="next">next</a> </div>
css樣式不再詳述,想要使圖片位置發(fā)生變化,方法有很多。此次用的是定位,修改.list的left值。
js代碼如下:
(function(){
var list=document.querySelector(".list");
var imgs=document.querySelectorAll("img");
var prev=document.querySelector(".prev");
var next=document.querySelector(".next");
var imgW=css(imgs[0],"width");//使用封裝好的css()獲取img的寬度
var now=0;
var imgData=["img/img0.png",
"img/img1.png",
"img/img2.png",
"img/img3.png",];
prev.onclick=function(){
//找出接下來要顯示的圖片的下標
var prev=(now-1+imgData.length)%imgData.length;
//因為是從右往左運動,當前顯示的應在右側,即將顯示的在左側
imgs[0].src=imgData[prev];
imgs[1].src=imgData[now];
//使用封裝好的css()設置list的位置
css(list,"left",-imgW);
//使用封裝好的運動函數來控制圖片移動
startMove(list,{left:0},2000,"easeOut");
now=prev;
}
next.onclick=function(){
var next=(now+1)%imgData.length;
imgs[0].src=imgData[now];
imgs[1].src=imgData[next];
css(list,"left",0);
startMove(list,{left:-imgW},2000,"easeOut");
now=next;
}
})();
到這一步,大體功能已經實現。但是當頻繁點擊上一張/下一張按鈕時,會發(fā)現圖片在設定的運動時間閃換。解決這個問題有兩個辦法:1.減小運動時間,如將2000ms改為500ms,2.限定定時器只能開一個。
在上述js代碼基礎上增加以下代碼,以上一張操作為例,增加定時器個數判斷。
var isMove=false;//記錄定時器開關狀態(tài)
prev.onclick=function(){
if(isMove){
return;
}
....上述上一張操作js代碼
isMove=true;
startMove(list,{left:-imgW},2000,"easeOut",function(){
isMove=false;
});
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

