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 相关文章推荐
JS 中document.URL 和 windows.location.href 的区别
Nov 11 Javascript
jquery动态加载js三种方法实例
Aug 03 Javascript
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
Sep 23 Javascript
jQuery使用ajaxSubmit()提交表单示例
Apr 04 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
Mar 10 Javascript
TinyMCE汉化及本地上传图片功能实例详解
May 31 Javascript
JavaScript奇技淫巧44招【实用】
Dec 11 Javascript
微信小程序tabBar底部导航中文注解api详解
Aug 16 Javascript
通过说明与示例了解js五种设计模式
Jun 17 Javascript
javascript代码实现简易计算器
Jan 25 Javascript
vue脚手架项目创建步骤详解
Mar 02 Vue.js
js基于div丝滑实现贝塞尔曲线
Sep 23 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
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
php绘制一条直线的方法
2015/01/24 PHP
PHP执行linux命令常用函数汇总
2016/02/02 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
JavaScript计算字符串中每个字符出现次数的小例子
2013/07/02 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
JSONP跨域请求实例详解
2016/07/04 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
React数据传递之组件内部通信的方法
2017/12/31 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
python删除字符串中指定字符的方法
2018/08/13 Python
将python图片转为二进制文本的实例
2019/01/24 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
Python验证码截取识别代码实例
2020/05/16 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
美味咖啡的顶级烘焙师:Cafe Britt
2018/03/15 全球购物
internal修饰符起什么作用
2013/12/16 面试题
学习雷锋演讲稿
2014/05/10 职场文书
项目经理任命书内容
2014/06/06 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
2014年图书室工作总结
2014/12/09 职场文书
亮剑观后感
2015/06/05 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS