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中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
Jun 28 Javascript
jQuery常见开发技巧详细整理
Jan 02 Javascript
js中substring和substr的详细介绍与用法
Aug 29 Javascript
JS 毫秒转时间示例代码
Sep 22 Javascript
JS脚本实现动态给标签控件添加事件的方法
Jun 02 Javascript
js实现倒计时效果(小于10补零)
Mar 08 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
Mar 24 jQuery
vue+axios实现登录拦截的实例代码
May 22 Javascript
Vue如何实现组件的源码解析
Jun 08 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
Apr 22 Javascript
JS实现图片旋转动画效果封装与使用示例
Jul 09 Javascript
小程序中英文混合排序问题解决
Aug 02 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 Google的translate API代码
2008/12/10 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
一组PHP可逆加密解密算法实例代码
2014/01/21 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
PHP new static 和 new self详解
2017/02/19 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
JavaScript 字符编码规则
2009/05/04 Javascript
javascript调试说明
2010/06/07 Javascript
js图片自动切换效果处理代码
2013/05/07 Javascript
javascript alert乱码的解决方法
2013/11/05 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
2014/03/25 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
python中的hashlib和base64加密模块使用实例
2014/09/02 Python
Python中asyncore的用法实例
2014/09/29 Python
Python运行报错UnicodeDecodeError的解决方法
2016/06/07 Python
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
python类的继承实例详解
2017/03/30 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
PHP面试题及答案一
2012/06/18 面试题
如何写好升职自荐信
2014/01/06 职场文书
十八届三中全会宣传方案
2014/02/21 职场文书
班长演讲稿范文
2014/04/24 职场文书
实战Python爬虫爬取酷我音乐
2022/04/11 Python