1. 程式人生 > >Jquery和純JS實現輪播圖(一)--左右切換式

Jquery和純JS實現輪播圖(一)--左右切換式

var cur = 0, //當前的圖片序號 imgLis = getElementsByClassName("imgList")[0].getElementsByTagName("li"), //獲取圖片組 imgLen = imgLis.length, //獲取圖片的數量 timer = null; //設定定時定時器的名字,方便後面關閉 dollLis = getElementsByClassName("dollList")[0].getElementsByTagName("li"); //獲取下方圓點 //封裝圖片自動播放函式 function
changeImg(){
timer = setInterval(function(){ if(cur < imgLen -1){ cur ++; }else{ cur = 0; } //呼叫變換處理函式 changeTo(cur); },2500); } changeImg(); //呼叫新增事件處理 addEvent(); //給左右箭頭和右下角的圖片index新增事件處理 function addEvent(){ for
(var i=0;i<imgLen;i++){ //閉包防止作用域內活動物件item的影響 (function(_i){ //滑鼠滑過則清除定時器,並作變換處理 dollLis[_i].onmouseover = function(){ clearTimeout(timer); changeTo(_i); cur = _i; }; //滑鼠滑出則重置定時器處理 dollLis[_i].onmouseout = function(){ changeImg(); }; })(i); } //給左箭頭prev新增上一個事件
var pre = getElementsByClassName("pre")[0]; pre.onmouseover = function(){ //滑入清除定時器 clearIntervcural(timer); }; pre.onclick = function(){ //根據curIndex進行上一個圖片處理 cur = (cur > 0) ? (--cur) : (imgLen - 1); changeTo(cur); }; pre.onmouseout = function(){ //滑出則重置定時器 changeImg(); }; //給右箭頭next新增下一個事件 var next = getElementsByClassName("next")[0]; next.onmouseover = function(){ clearInterval(timercur); }; next.onclick = function(){ cur = (cur < imgLen - 1) ? (++cur) : 0; changeTo(cur); }; next.onmouseout = function(){ changeImg(); }; } //左右切換處理函式 function changeTo(num){ //設定image var imgList = getElementsByClassName("imgList")[0]; goLeft(imgList,num*800); //左移一定距離 //設定image的控制下標 index var _curIndex = getElementsByClassName("sec")[0]; removeClass(_curIndex,"sec"); addClass(dollLis[num],"sec"); } //圖片組相對原始左移dist px距離 function goLeft(elem,dist){ if(dist == 800){ //第一次時設定left為0px 或者直接使用內嵌法 style="left:0;" elem.style.left = "0px"; } var toLeft; //判斷圖片移動方向是否為左 dist = dist + parseInt(elem.style.left); //圖片組相對當前移動距離 if(dist<0){ toLeft = false; dist = Math.abs(dist); }else{ toLeft = true; } for(var i=0;i<= dist/20;i++){ //這裡設定緩慢移動,10階每階80px (function(_i){ var pos = parseInt(elem.style.left); //獲取當前left setTimeout(function(){ pos += (toLeft)? -(_i * 20) : (_i * 20); //根據toLeft值指定圖片組位置改變 //console.log(pos); elem.style.left = pos + "px"; },_i * 25); //每階間隔50毫秒 })(i); } }