zoukankan      html  css  js  c++  java
  • JavaScript学习笔记(八)拖放

    1. 元素跟随鼠标

    document.addEventListener('mousemove', function(event) {
      var myDiv = document.getElementById('myDiv')
      myDiv.style.left = event.clientX + 'px'
      myDiv.style.top = event.clientY + 'px'
    })

    2. 可拖动元素的事件

    var DragDrop = function () {
      var dragdrop = new EventTarget()
      var dragging = null
      var diffX = 0
      var diffY = 0
      function handleEvent(event) {
        var target = event.target
        switch(event.type) {
          case 'mousedown':
            if (target.className.indexOf('draggble') > -1) {
              dragging = target
              diffX = event.clientX - target.offsetLeft
              diffY = event.clientY - target.offsetTop
              dragdrop.fire({type: 'dragstart', target: dragging, x: event.clientX, y: event.clientY})
            }
            break
          case 'mousemove':
            if (dragging !== null) {
              dragging.style.left = (event.clientX - diffX) + 'px'
              dragging.style.top = (event.clientY - diffY) + 'px'
              dragdrop.fire({type: 'drag', target: dragging, x: event.clientX, y: event.clientY})
            }
            break
          case 'mouseup':
            dragging = null
            dragdrop.fire({type: 'dragend', target: dragging, x: event.clientX, y: event.clientY})
            break
        }
      }
      dragdrop.enable = function() {
        document.addEventListener('mousedown', handleEvent)
        document.addEventListener('mousemove', handleEvent)
        document.addEventListener('mouseup', handleEvent)
      }
      dragdrop.disable = function() {
        document.removeEventListener('mousedown', handleEvent)
        document.removeEventListener('mousemove', handleEvent)
        document.removeEventListener('mouseup', handleEvent)
      }
      return dragdrop
    }
    var dragdrop = DragDrop()
    dragdrop.addHandler('dragstart', function(event) {
      console.log('start', event)
    })
    dragdrop.addHandler('drag', function(event) {
      console.log('drag', event)
    })
    dragdrop.addHandler('dragend', function(event){
      console.log('end', event)
    })
    dragdrop.enable()

    参考: EventTarget

  • 相关阅读:
    源代码的下载和翻译
    Git使用入门
    搭建Andriod开发环境
    Andriod系统移植与驱动开发概述
    直观打印二叉树
    深度优先遍历图(DFS)
    《UNIX网络编程 卷1 套接字联网API》(第三版)阅读笔记----2018.5.22
    C/C++
    实现具有getMin功能的栈
    用两个栈来模拟一个队列
  • 原文地址:https://www.cnblogs.com/zhoulixue/p/10780151.html
Copyright © 2011-2022 走看看