原生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 相关文章推荐
jquery.ui.draggable中文文档
Nov 24 Javascript
jquery实现滑动图片自己测试的例子
Nov 05 Javascript
node.js中的http.response.removeHeader方法使用说明
Dec 14 Javascript
详解javascript函数的参数
Nov 10 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
Mar 13 Javascript
JavaScript实现三级联动菜单实例代码
Jun 26 Javascript
webpack 2的react开发配置实例代码
Jul 28 Javascript
vue-cli+webpack项目 修改项目名称的方法
Feb 28 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
Dec 19 Javascript
vue data对象重新赋值无效(未更改)的解决方式
Jul 24 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
Jul 29 Javascript
vue中可编辑树状表格的实现代码
Oct 31 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传输数据的代码
2007/11/13 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
python中cPickle用法例子分享
2014/01/03 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
kali中python版本的切换方法
2019/07/11 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
深圳-东方伟业笔试部分
2015/02/11 面试题
Prototype是怎么扩展DOM的
2014/10/01 面试题
创先争优公开承诺书
2014/08/30 职场文书
2014年幼儿园保育工作总结
2014/12/02 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
八一建军节慰问信
2015/02/14 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript
React如何创建组件
2021/06/27 Javascript
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript