原生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 相关文章推荐
imgAreaSelect 中文文档帮助说明
Oct 08 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
Nov 04 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
Jun 24 Javascript
jQuery中多个元素的Hover事件解决方案
Jun 12 Javascript
jQuery显示和隐藏 常用的状态判断方法
Jan 29 Javascript
jquery实现简单的banner轮播效果【实例】
Mar 30 Javascript
如何判断Javascript对象是否存在的简单实例
May 18 Javascript
Highcharts入门之简介
Aug 02 Javascript
ES6入门教程之Class和Module详解
May 17 Javascript
js实现无限瀑布流实例方法
Sep 16 Javascript
vue $set 给数据赋值的实例
Nov 09 Javascript
vue 内联样式style中的background用法说明
Aug 05 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项目开发中最常用的自定义函数整理
2010/12/02 PHP
PHP之预定义接口详解
2015/07/29 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
JS定义回车事件(实现代码)
2013/07/08 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
2016/12/27 Javascript
js实现消息滚动效果
2017/01/18 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
2019/08/09 Python
python并发编程多进程 互斥锁原理解析
2019/08/20 Python
Python的缺点和劣势分析
2019/11/19 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
如何理解Python中包的引入
2020/05/29 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
2021/02/19 Python
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
迎元旦广播稿
2014/02/22 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers
pycharm无法安装cv2模块问题
2022/05/20 Python