原生js實(shí)現(xiàn)移動(dòng)端觸摸輪播的示例代碼
PC端上實(shí)現(xiàn)圖片輪播效果很簡(jiǎn)單,只要通過(guò)使用click事件就可以非常簡(jiǎn)單的實(shí)現(xiàn)效果,但是在移動(dòng)端上,就要通過(guò)核心的touch事件來(lái)實(shí)現(xiàn)。
下面是移動(dòng)端手指滑動(dòng)輪播圖的完整代碼。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<style>
*{margin:0;padding:0;}
li{list-style:none;}
.lb{width:320px;height:130px;position:relative;margin:20px auto;overflow: hidden;}
.lb .lb_img{width:2240px;height:130px;position:absolute;left:-320px;}
.lb .lb_img img{width:320px;height:130px;float:left;display:block;}
.lb ul{width:35px;height:4px;position:absolute;bottom:10px;left:50%;margin-left:-15px;}
.lb ul li{width:4px;height:4px;border-radius:2px;border:0.25px solid #fff;margin-left:2.5px;background:#666;float:left;cursor:pointer;}
.lb ul .active{background:#fff;}
.lb ul li:hover{background:#fff;}
</style>
</head>
<body>
<div class="lb">
<div class="lb_img">
<img src="img/4.jpg">
<img src="img/0.jpg">
<img src="img/1.jpg">
<img src="img/2.jpg">
<img src="img/3.jpg">
<img src="img/4.jpg">
<img src="img/0.jpg">
</div>
<ul>
<li class="active"></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<script>
var lb = document.querySelector(".lb");
var lb_img = document.querySelector(".lb .lb_img");
var img = document.querySelectorAll(".lb .lb_img img")
var lis = document.querySelectorAll(".lb ul li");
var i=2;
// 初始化手指坐標(biāo)點(diǎn)
var startPoint = 0;
var startEle = 0;
//手指按下
lb.addEventListener("touchstart",function(e){
startPoint = e.changedTouches[0].pageX;
startEle = lb_img.offsetLeft;
clearInterval(Time)
});
//手指滑動(dòng)
lb.addEventListener("touchmove",function(e){
var currPoint = e.changedTouches[0].pageX;
var disX = currPoint - startPoint;
var left = startEle + disX;
lb_img.style.left = left + "px";
});
//當(dāng)手指抬起的時(shí)候,
lb.addEventListener("touchend",function(e){
var currPoint = e.changedTouches[0].pageX;
var disX = - (currPoint - startPoint);
var left = startEle + disX;
if(disX > 150){
i++;
for(var q=0;q<lis.length;q++){
lis[q].className = '';
}
if(i == 7){
i=2;
}
lis[i-2].className= "active" ;
lb_img.style.left = -320*(Math.round(disX/320)+i+1)+ 'px';
}else{
lb_img.style.left = -320*(i-1) + "px";
}
if(disX < -150){
i--;
for(var q=0;q<lis.length;q++){
lis[q].className = '';
}
if(i == 1){
i=6;
}
lis[i-2].className= "active" ;
lb_img.style.left = -320*(Math.round(-disX/320)+i-2) + 'px';
}else{
lb_img.style.left = -320*(i-1) + "px";
}
Time=setInterval(autoplay,2000);
})
//設(shè)置定時(shí)器
Time=setInterval(autoplay,2000);
function autoplay(){
i++;
for(var q=0;q<lis.length;q++){
lis[q].className = '';
}
if(i == 7){
i=2;
}
lis[i-2].className= "active" ;
for(var a=0; a<320;a++){
setTimeout(function(){
var left = lb_img.style.left ? lb_img.style.left : "-320px";
left = parseInt(left)-1;
if(left<-1920){
left=-321;
}
lb_img.style.left = left + "px";
},a);
}
}
</script>
</body>
</html>
以上這篇原生js實(shí)現(xiàn)移動(dòng)端觸摸輪播的示例代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
純JavaScript代碼實(shí)現(xiàn)移動(dòng)設(shè)備繪圖解鎖
為了個(gè)人信息的安全起見(jiàn),移動(dòng)設(shè)備上都有個(gè)繪圖解鎖,使用起來(lái)非常簡(jiǎn)單,代碼是怎么實(shí)現(xiàn)的呢?下面小編給大家介紹js實(shí)現(xiàn)移動(dòng)設(shè)備繪圖解鎖,需要的朋友可以參考下2015-10-10
詳解JavaScript中js對(duì)象與JSON格式字符串的相互轉(zhuǎn)換
本篇文章主要介紹了JavaScript中js對(duì)象與JSON格式字符串的相互轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02
CKEditor 4.4.1 添加代碼高亮顯示插件功能教程【使用官方推薦Code Snippet插件】
這篇文章主要介紹了CKEditor 4.4.1 添加代碼高亮顯示插件功能,涉及ckeditor使用官方推薦Code Snippet插件的相關(guān)操作布局與使用注意事項(xiàng),需要的朋友可以參考下2019-06-06
js獲取所有checkbox的值的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇js獲取所有checkbox值的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05
javascript簡(jiǎn)單判斷輸入內(nèi)容是否合法的方法
這篇文章主要介紹了javascript簡(jiǎn)單判斷輸入內(nèi)容是否合法的方法,以驗(yàn)證用戶(hù)名是否為數(shù)字與字母組成為例,分析了javascript正則驗(yàn)證的思路與實(shí)現(xiàn)方法,需要的朋友可以參考下2016-05-05
JavaScript?中如何攔截全局?Fetch?API?的請(qǐng)求和響應(yīng)問(wèn)題
在本文中,我們介紹了什么是 JavaScript 攔截器,學(xué)習(xí)了如何通過(guò)給 Fetch API 使用猴子補(bǔ)丁和使用 fetch-intercept 庫(kù)來(lái)創(chuàng)建攔截器,對(duì)js攔截全局Fetch?API的請(qǐng)求和響應(yīng)知識(shí)感興趣的朋友跟隨小編一起看看吧2023-01-01
通過(guò)JS 獲取Mouse Position(鼠標(biāo)坐標(biāo))的代碼
最近我發(fā)現(xiàn)在webpage中獲取空間的絕對(duì)坐標(biāo)時(shí),如果有滾動(dòng)條就會(huì)有錯(cuò),后來(lái)用無(wú)名發(fā)現(xiàn)的方法得以解決。2009-09-09

