原生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 相关文章推荐
同一页面多个商品倒计时JS 基于面向对象的javascript
Feb 16 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
Jun 19 Javascript
jquery实现清新实用的网页菜单效果
Aug 28 Javascript
原生js制作日历控件实例分享
Apr 06 Javascript
Angular页面间切换及传值的4种方法
Nov 04 Javascript
Angular2下使用pdf插件的方法详解
Apr 29 Javascript
VSCode配置react开发环境的步骤
Dec 27 Javascript
React中如何引入Angular组件详解
Aug 09 Javascript
前端防止用户重复提交js实现代码示例
Sep 07 Javascript
vue绑定事件后获取绑定事件中的this方法
Sep 15 Javascript
通过实践编写优雅的JavaScript代码
May 30 Javascript
vue选项卡切换登录方式小案例
Sep 27 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实现验证码校验功能
2017/11/16 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
JavaScript 动态生成方法的例子
2009/07/22 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
JS验证字符串功能
2017/02/22 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
vue组件学习教程
2017/09/09 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
详解vue 在移动端体验上的优化解决方案
2019/05/20 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
python使用socket向客户端发送数据的方法
2015/04/29 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
简单谈谈python基本数据类型
2018/09/26 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
Matplotlib.pyplot 三维绘图的实现示例
2020/07/28 Python
Python进行统计建模
2020/08/10 Python
python用tkinter实现一个gui的翻译工具
2020/10/26 Python
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
自我鉴定的范文
2013/10/03 职场文书
关于环保的建议书400字
2014/03/12 职场文书
和解协议书
2014/04/16 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
2016年情人节广告语
2016/01/28 职场文书
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server
Vue Element UI自定义描述列表组件
2021/05/18 Vue.js