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


Posted in Javascript onDecember 22, 2017

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

Javascript 相关文章推荐
Firefox div高度自适应
Apr 28 Javascript
jquery 表单进行客户端验证demo
Aug 24 Javascript
jquery animate 动画效果使用说明
Nov 04 Javascript
jQuery+ajax实现顶一下,踩一下效果
Jul 17 Javascript
javascript 拖动表格行实现代码
May 05 Javascript
jQuery之排序组件的深入解析
Jun 19 Javascript
jQuery判断复选框是否勾选的原理及示例
May 21 Javascript
jquery插件NProgress.js制作网页加载进度条
Jun 05 Javascript
搭建Bootstrap离线文档的方法
Dec 02 Javascript
JS数组排序方法实例分析
Dec 16 Javascript
详解jquery validate实现表单验证 (正则表达式)
Jan 18 Javascript
javascript中join方法实例讲解
Feb 21 Javascript
JavaScript多线程运行库Nexus.js详解
Dec 22 #Javascript
JS实现在文本指定位置插入内容的简单示例
Dec 22 #Javascript
JavaScript实现单例模式实例分享
Dec 22 #Javascript
vue使用axios时关于this的指向问题详解
Dec 22 #Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 #Javascript
vue init失败简单解决方法(终极版)
Dec 22 #Javascript
使用axios实现上传图片进度条功能
Dec 21 #Javascript
You might like
php返回json数据函数实例
2014/10/09 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
转义字符(\)对JavaScript中JSON.parse的影响概述
2013/07/17 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
JavaScript实现将xml转换成html table表格的方法
2015/04/17 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
AngularJS基础 ng-repeat 指令简单示例
2016/08/03 Javascript
Bootstrap对话框使用实例讲解
2016/09/24 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
python异常和文件处理机制详解
2016/07/19 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
Django中使用Celery的教程详解
2018/08/24 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
html+js 实现markdown编辑器效果
2019/10/23 HTML / CSS
美的官方商城:Midea
2016/09/14 全球购物
Linux常见面试题
2013/03/18 面试题
中学教师管理制度
2014/01/14 职场文书
开学寄语大全
2014/04/08 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
合伙购房协议样本
2014/10/06 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
Vue.Draggable实现交换位置
2022/04/07 Vue.js
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang
分享python函数常见关键字
2022/04/26 Python