iTakeo

随手记:旋转按钮。

绕圆心旋转:

  1. ;(function(){  
  2.     var dot = document.querySelector(‘.dot’);  
  3.     var debug = document.querySelector(‘.debug’)  
  4.     var parent =dot.parentNode;  
  5.     var _event = ‘ontouchstart’ in document.documentElement;  
  6.     var start =_event ? ‘touchstart’ : ‘mousedown’;  
  7.     var move = _event ? ‘touchmove’ : ‘mousemove’;  
  8.     var end = _event ? ‘touchend’ : ‘mouseup’;  
  9.     dot.addEventListener(start, eventDown);  
  10.     var angle,delta_y,delta_x;  
  11.     function eventDown(e){  
  12.         mousedown = true;  
  13.         (_event ? dot : document).addEventListener(move, eventMove);  
  14.         (_event ? dot : document).addEventListener(end,eventUp );  
  15.         return;  
  16.     };  
  17.     function eventMove(e){  
  18.         if(mousedown){  
  19.             if(e.changedTouches){  
  20.                 e = e.touches[0];  
  21.             };  
  22.             var st = document.documentElement.scrollTop || document.body.scrollTop;  
  23.             document.title = parent.getBoundingClientRect().top+st  
  24.             delta_x = (parent.offsetWidth / 2 +  parent.getBoundingClientRect().left) – e.pageX ;  
  25.             delta_y = (parent.offsetHeight / 2 + parent.getBoundingClientRect().top)+st – e.pageY;  
  26.             angle = Math.atan2(delta_y, delta_x) * (180 / Math.PI);  
  27.             angle 90;  
  28.             if(angle < 0){  
  29.                 angle = 360 + angle;  
  30.             };  
  31.             angle = Math.round(angle);  
  32.             dot.style.transform = ‘rotate(‘ + angle + ‘deg)’;  
  33.             debug.innerHTML = angle + ‘deg’;  
  34.         };  
  35.     };  
  36.     function eventUp(e){  
  37.         (_event ? dot : document).removeEventListener(move, eventMove);  
  38.         (_event ? dot : document).removeEventListener(end,eventUp );  
  39.         mousedown=false;  
  40.     };  
  41. })();  

0deg

2015/09/25 1 / /
标签:  暂无标签

评论回复

  1. 回复 老杨

    :mrgreen: 😀 🙂 真是不错。

验证码: 2 + 5 =

回到顶部