原生javascript移动端滑动banner效果


Posted in Javascript onMarch 10, 2017

本文实例为大家分享了移动端滑动banner效果的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
 <meta name="apple-mobile-web-app-capable" content="yes">
 <meta content="telephone=yes" name="format-detection" />
 <meta name="apple-mobile-web-app-status-bar-style" content="white">
 <meta name="x5-fullscreen" content="true">
 <meta name="apple-touch-fullscreen" content="yes">
 <title>Document</title>
 <style>
  *{margin:0;padding:0;}
  .box{
   height:200px;
   width:100%;
   overflow: hidden;
  }
  .movebox{
   height:200px;
   width:9000px;
   padding:0;
   position:relative;
   left:0;
  }
  .movebox li{
   height:200px;
   float:left;
   list-style:none;
   font-size:30px;
   color:#fff;
  }

 </style>
 <script>
  window.onload = function(){

   var moveX,  //手指滑动距离
    endX,  //手指停止滑动时X轴坐标
    cout = 0, //滑动计数器
    moveDir; //滑动方向
   var movebox = document.querySelector(".movebox"); //滑动对象
   var Li = movebox.querySelectorAll("li"); //滑动对象item
   var width = parseInt(window.getComputedStyle(movebox.parentNode).width); //滑动对象item的宽度

   movebox.style.width = (width*4) + "px"; //设置滑动盒子width
   for(var i = 0; i < Li.length; i++){
    Li[i].style.width = width + "px"; //设置滑动item的width,适应屏幕宽度
   }

   //触摸开始
   function boxTouchStart(e){
    var touch = e.touches[0]; //获取触摸对象
    startX = touch.pageX; //获取触摸坐标
    endX = parseInt(movebox.style.webkitTransform.replace("translateX(", "")); //获取每次触摸时滑动对象X轴的偏移值
   }

   function boxTouchMove(e){
    var touch = e.touches[0];
    moveX = touch.pageX - startX; //手指水平方向移动的距离

    if(cout == 0 && moveX > 0){  //刚开始第一次向左滑动时
     return false;
    }

    if(cout == 3 && moveX < 0){  //滑动到最后继续向右滑动时
     return false;
    }

    movebox.style.webkitTransform = "translateX(" + (endX + moveX) + "px)"; //手指滑动时滑动对象随之滑动
   }

   function boxTouchEnd(e){
    moveDir = moveX < 0 ? true : false;  //滑动方向大于0表示向左滑动,小于0表示向右滑动
    //手指向左滑动
    if(moveDir){

     if(cout<3){
      movebox.style.webkitTransform = "translateX(" + (endX-width) + "px)";
      cout++;
     }
    //手指向右滑动
    }else{
     //滑动到初始状态时返回false
     if(cout == 0){
      return false;
     }else{
      movebox.style.webkitTransform = "translateX(" + (endX+width) + "px)";
      cout--;
     }
    }
   }

   //滑动对象事件绑定
   movebox.addEventListener("touchstart", boxTouchStart, false);
   movebox.addEventListener("touchmove", boxTouchMove, false);
   movebox.addEventListener("touchend", boxTouchEnd, false);
  }
 </script>
</head>

<body style="position:absolute;width:100%;overflow:hidden;">
 <div class="box">
  <ul class="movebox" style="transition-duration:0.2s;transform: translateX(-0px);">
   <li style="background:red;">1</li>
   <li style="background:yellow">2</li>
   <li style="background:blue">3</li>
   <li style="background:green">4</li>
  </ul>
 </div>
</body>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Display SQL Server Login Mode
Jun 21 Javascript
JS在textarea光标处插入文本的小例子
Mar 22 Javascript
jquery $(this).attr $(this).val方法使用介绍
Oct 08 Javascript
JavaScript中的undefined学习总结
Nov 30 Javascript
JavaScript驾驭网页-CSS与DOM
Mar 24 Javascript
jQuery使用正则表达式限制文本框只能输入数字
Jun 18 Javascript
jQuery版AJAX简易封装代码
Sep 14 Javascript
Bootstrap简单表单显示学习笔记
Nov 15 Javascript
js上下视差滚动简单实现代码
Mar 07 Javascript
详解node.js的http模块实例演示
Jul 12 Javascript
转换layUI的数据表格中的日期格式方法
Sep 19 Javascript
vue实现虚拟列表功能的代码
Jul 28 Javascript
jQuery弹出窗口简单实现代码
Mar 09 #Javascript
JavaScript实现弹窗效果代码分析
Mar 09 #Javascript
详解Vue方法与事件
Mar 09 #Javascript
Vue实现自带的过滤器实例
Mar 09 #Javascript
Vue中fragment.js使用方法详解
Mar 09 #Javascript
JavaScript编写一个贪吃蛇游戏
Mar 09 #Javascript
canvas压缩图片转换成base64格式输出文件流
Mar 09 #Javascript
You might like
新版PHP将向Java靠拢
2006/10/09 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
2019/04/17 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
详解Python pygame安装过程笔记
2017/06/05 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
python绘制多个曲线的折线图
2020/03/23 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
浅析Python面向对象编程
2020/07/10 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
普通大学毕业生自荐信
2013/11/04 职场文书
应急处置方案
2014/06/16 职场文书
元旦晚会活动总结
2014/07/09 职场文书
党校个人总结
2015/03/04 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
吃通javascript正则表达式
2021/04/21 Javascript
mysql在项目中怎么选事务隔离级别
2021/05/25 MySQL