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

  • 相关阅读:
    SQL Server 链接服务器连接 SQLite数据库文件
    HighCharts初测试
    集锦
    MDX 脚本语句 -- Scope
    七年一轮回
    20145205武钰《网络对抗》web安全基础实践
    20145205 武钰 《网络对抗》Exp8 Web基础
    20145205《网络攻防》网络欺诈技术防范
    20145205《网络对抗》信息收集和漏洞扫描技术
    20145205武钰_Exp5 MSF基础应用
  • 原文地址:https://www.cnblogs.com/zhoulixue/p/10780151.html
Copyright © 2011-2022 走看看