当前位置: 移动技术网 > IT编程>开发语言>JavaScript > 原生js实现移动端触摸轮播的示例代码

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

2018年02月18日  | 移动技术网IT编程  | 我要评论

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实现移动端触摸轮播的示例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网