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 相关文章推荐
多个iframe自动调整大小的问题
Sep 18 Javascript
让IE6支持min-width和max-width的方法
Jun 25 Javascript
jquery图片不完全按比例自动缩小的简单代码
Jul 29 Javascript
JS显示下拉列表框内全部元素的方法
Mar 31 Javascript
JQuery实现可直接编辑的表格
Apr 16 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
May 25 Javascript
js基于cookie记录来宾姓名的方法
Jul 19 Javascript
jQuery的extend方法【三种】
Dec 14 Javascript
JavaScript数组push方法使用注意事项
Oct 30 Javascript
node.js环境搭建图文详解
Sep 19 Javascript
ES6 对象的新功能与解构赋值介绍
Feb 05 Javascript
微信小程序实现拍照和相册选取图片
May 09 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设计模式 Proxy (代理模式)
2011/06/26 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
js和jquery如何获取图片真实的宽度和高度
2014/09/28 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
基于Python的接口测试框架实例
2016/11/04 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
django修改models重建数据库的操作
2020/03/31 Python
利用python下载scihub成文献为PDF操作
2020/07/09 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
毕业生的求职信范文分享
2013/12/04 职场文书
竞争性谈判邀请书
2014/02/06 职场文书
我的中国梦演讲稿1000字
2014/08/19 职场文书
赔偿协议书范本
2014/09/12 职场文书
校园广播稿精选
2014/10/01 职场文书
红旗渠导游词
2015/02/09 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
民事起诉状范文
2015/05/19 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA