move.js 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // 鼠标移动滚动位置类
  2. class Drag {
  3. constructor(vm) {
  4. this.dragWrap = vm;// 要挂载的容器
  5. this._dom = {};
  6. this._x = 0;
  7. this._y = 0;
  8. this._top = 0;
  9. this._left = 0;
  10. this.move = false;
  11. this.down = false;
  12. this.init.apply(this, arguments);
  13. }
  14. // 绑定事件
  15. init() {
  16. this.bindEvent();
  17. }
  18. // 给要素增加鼠标事件mousedown,mouseup,mousemove
  19. bindEvent() {
  20. var t = this;
  21. this.dragWrap.addEventListener('mousedown', function (e) {
  22. e && e.preventDefault();
  23. if (!t.move) {
  24. t.move = false;
  25. t.down = true;
  26. t._x = e.clientX;
  27. t._y = e.clientY;
  28. t._top = t.dragWrap.scrollTop;
  29. t._left = t.dragWrap.scrollLeft;
  30. }
  31. });
  32. this.dragWrap.addEventListener('mouseup', function (e) {
  33. e && e.preventDefault();
  34. t.move = false;
  35. t.down = false;
  36. });
  37. this.dragWrap.addEventListener('mousemove', function (e) {
  38. if (t.down) {
  39. e && e.preventDefault();
  40. t.move = true;
  41. let x = t._x - e.clientX;
  42. let y = t._y - e.clientY;
  43. t.dragWrap.scrollLeft = t._left + x;
  44. t.dragWrap.scrollTop = t._top + y;
  45. }
  46. });
  47. }
  48. }
  49. export default Drag;