javascript原生移动drag效果之touch.drag.js

jerry thinkphp 2015年11月19日 收藏
手机页面的上下左右拖动效果.
详情请阅读:https://git.oschina.net/wuquanyao/touch.drag.js
  1. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2. //+ author:wuquanyao
  3. //+ email:wqynqa@163.com
  4. //+ nickname:挪威森林
  5. //+ touch.drag-1.0.0.js,测试版
  6. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  7. var Touch = {};
  8. (function(Touch){

  9.     //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  10.     //+ config参数{seletor:'',direction:1, factor:1}
  11.     //+ selector:css选择器;
  12.     //+ direction:0|1|2,0垂直方向,1水平方向,2综合方向;
  13.     //+ factor:弹性因子,0到1,值越大,阻尼越大
  14.     //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  15.     Touch.drag = function(config){

  16.         config = config || {selector:'body',direction:1,factor:0.7};

  17.         var ele,

  18.             pos    = {x:'',y:''}, 

  19.             press  = {x:'',y:''},

  20.             events = ['touchstart','touchmove','touchend','touchcancel'];

  21.         ele = document.querySelector(config['selector']);

  22.         ele.addEventListener(events[0],function(event){
  23.             
  24.             event.preventDefault();

  25.             pos['x'] = event.currentTarget.getBoundingClientRect().left;

  26.             pos['y'] = event.currentTarget.getBoundingClientRect().top;

  27.             press['x'] = event.touches[0].pageX;

  28.             press['y'] = event.touches[0].pageY;

  29.         },false);
  30.         ele.addEventListener(events[1],function(event){

  31.             event.preventDefault();

  32.             if(event.targetTouches.length>1)return false;

  33.             var move = {x:null,y:null};
  34.             //x>0向右,x<0向左
  35.             move['x'] = (event.touches[0].pageX - press['x'])*(1-config.factor);
  36.             //y>0向上,y<0向下
  37.             move['y'] = (event.touches[0].pageY - press['y'])*(1-config.factor);

  38.             switch(config.direction){

  39.                 case 0: translate = 'translate(0,'+move['y']+'px)';
  40.                         break;

  41.                 case 1: translate = 'translate('+move['x']+'px,0)';
  42.                         break;

  43.                 case 2: translate = 'translate('+move['x']+'px,'+move['y']+'px)'; 
  44.                         break;

  45.                 default:translate = 'translate('+move['x']+'px,0)';
  46.             }

  47.             event.currentTarget.style.webkitTransform = translate;

  48.         },false);

  49.         ele.addEventListener(events[2],function(event){            

  50.             event.preventDefault();

  51.             event.currentTarget.style.webkitTransform = 'translate('+pos['x']+'px,'+pos['y']+'px)';

  52.         },false);
  53.     }
  54. })(Touch);

附件QQ截图20151027102555.png ( 150.15 KB 下载:28 次 )