欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

原生js实现移动端触摸轮播的示例代码

程序员文章站 2022-05-03 14:50:40
pc端上实现图片轮播效果很简单,只要通过使用click事件就可以非常简单的实现效果,但是在移动端上,就要通过核心的touch事件来实现。 下面是移动端手指滑动轮播图的完整...

pc端上实现图片轮播效果很简单,只要通过使用click事件就可以非常简单的实现效果,但是在移动端上,就要通过核心的touch事件来实现。

下面是移动端手指滑动轮播图的完整代码。

<!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;
 // 初始化手指坐标点
 var startpoint = 0;
 var startele = 0;
 //手指按下
 lb.addeventlistener("touchstart",function(e){
 startpoint = e.changedtouches[0].pagex;
 startele = lb_img.offsetleft;
 clearinterval(time)
 });
 
 //手指滑动
 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"; 
 });
 //当手指抬起的时候,
 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);
 })
//设置定时器
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实现移动端触摸轮播的示例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。