js原生实现移动端手指滑动轮播图效果的示例


Posted in Javascript onJanuary 02, 2018

如下所示:

<!DOCTYPE html>
<html lang="en">
<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">
  <title>Document</title>
</head>
<style>
  html{height:100%;}
  body{width: 100%;height:100%;margin:0;overflow: hidden;}
  .wrap{position: relative;overflow: hidden;}
  .box{position: absolute;list-style: none;left:0;top:0;padding:0;margin:0;}
  .box li{float:left;}
  .box{
    position: relative;
    height: 2000px;
    width: 100%;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background: red;
  }
  .box1{
    height: 2000px;
  }
  .box2{
    background: yellow;
  }
  .box3{
    background: yellowgreen;
  }
  .box4{
    background: orange;
  }
  .box5{
    background: cyan;
  }
</style>
<body>
<div class="wrap">
  <ul class="box">
    <li><div class="box1 box2">11111</div></li>
    <li><div class="box1 box3">2222</div></li>
    <li><div class="box1 box4">3333</div></li>
    <li><div class="box1 box5">4444</div></li>
  </ul>
</div>
<script>
  var aLi = document.querySelectorAll(".box li");
  var box = document.querySelector('.box');
  var wrap = document.querySelector('.wrap');
  var aLiWidth = box.offsetWidth;
  console.log('aLiWidth: ' + aLiWidth)
  wrap.style.height = aLi[0].offsetHeight + 'px';
  // 设置盒子的宽度
  box.style.width = aLi.length*100 + '%';
  for(var i=0;i<aLi.length;i++){
    aLi[i].style.width = 1/aLi.length * 100 + '%';
  };
  // 初始化手指坐标点
  var startPoint = 0;
  var startEle = 0;
  //手指按下
  wrap.addEventListener("touchstart",function(e){
    startPoint = e.changedTouches[0].pageX;
    startEle = box.offsetLeft;
  });
  //手指滑动
  wrap.addEventListener("touchmove",function(e){
    var currPoint = e.changedTouches[0].pageX;
    var disX = currPoint - startPoint;
    var left = startEle + disX;
    box.style.left = left + 'px';
  });
  //当手指抬起的时候,判断图片滚动离左右的距离,当
  wrap.addEventListener("touchend",function(e){
    var left = box.offsetLeft;
// 判断正在滚动的图片距离左右图片的远近,以及是否为最后一张或者第一张
    var currNum = Math.round(-left/aLiWidth);
    currNum = currNum>=(aLi.length-1) ? aLi.length-1 : currNum;
    currNum = currNum<=0 ? 0 : currNum;
    box.style.left = -currNum*wrap.offsetWidth + 'px';
  })

</script>

</body>
</html>

以上这篇js原生实现移动端手指滑动轮播图效果的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jQuery的遍历同id元素 并响应事件的代码
Jun 14 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
Dec 15 Javascript
使用jQuery清空file文件域的解决方案
Apr 12 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
Dec 14 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
Nov 28 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
Jun 25 Javascript
TinyMCE汉化及本地上传图片功能实例详解
May 31 Javascript
适用于手机端的jQuery图片滑块动画
Dec 09 Javascript
浅谈Javascript事件对象
Feb 05 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
Aug 25 Javascript
对layui中表单元素的使用详解
Aug 15 Javascript
vue移动端屏幕适配详解
Apr 30 Javascript
vue父组件向子组件(props)传递数据的方法
Jan 02 #Javascript
基于wordpress的ajax写法详解
Jan 02 #Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
Jan 02 #Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
Jan 02 #Javascript
使用async、enterproxy控制并发数量的方法详解
Jan 02 #Javascript
图片懒加载imgLazyLoading.js使用详解
Sep 15 #Javascript
基于jquery.page.js实现分页效果
Jan 01 #jQuery
You might like
用PHP实现的随机广告显示代码
2007/06/14 PHP
教大家制作简单的php日历
2015/11/17 PHP
实现PHP搜索加分页
2016/10/12 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
javascript onmouseout 解决办法
2010/07/17 Javascript
google jQuery 引用文件,jQuery 引用地址集合(jquery 1.2.6至jquery1.5.2)
2011/04/24 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
javascript实用方法总结
2015/02/06 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
10行代码实现微信小程序滑动tab切换
2018/12/28 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
Python连接DB2数据库
2016/08/27 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
Python退火算法在高次方程的应用
2018/07/26 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
海外淘书首选:AbeBooks
2017/07/31 全球购物
大学毕业感言
2014/01/10 职场文书
大学生村官典型材料
2014/01/12 职场文书
天鹅的故事教学反思
2014/02/04 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
大学生个人学习总结
2015/02/15 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
大队委员竞选稿
2015/11/20 职场文书
Nginx反向代理、重定向
2022/04/13 Servers
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server