JavaScript 面向对象的拖拽

一、body

<div id="box"></div>

二、css

<style>

#box {

  position: abaolute;

  top: 0;

  left: 0;

  width: 100px;

  height: 100px;

}

</style>

三、JavaScript

<script>

  class Drag{

    constructor(el) {

      this.el = el;

      el.startOffset = null;

      el.startPoint = null;

      let move = (e) => {

        this.move(e);

      }

      let end = (e)=>{

        document.removeEventListener(‘mousemove‘, move);

        document.removeEventListener(‘mouseup‘, end);

      }

      el.addEventListener(‘mousedown‘, (e)=>{

        this.start(e);

        document.addEventListener(‘mousemove‘, move);

        document.addEventListener(‘mouseup‘, end);

      })

    }

    start(e) {

      let {el} = this;

      this.startOffset = {

        x: el.offsetLeft,

        y: el.offsetTop

      }

      this.startPoint = {

        x: e.clientX,

        y: e.clientY

      }

    }

    move(e) {

      let {el, startOffset, startPoint} = this;

      let nowPoint = {

        x: e.clientX,

        y: e.clientY

      }

      let dis = {

        x: nowPoint.x - startPoint.x,

        y: nowPoint.y - startPoint.y

      }

      el.style.left = startOffset.x + dis.x + ‘px‘;

      el.style.top =startOffset.y + dis.y + ‘px‘;

    }

  }

  let box = document.querySelector(‘#box‘);

  let drag = new Drag(box);

</script>

原文地址:https://www.cnblogs.com/hyshi/p/10913552.html

时间: 2025-01-02 01:35:29

JavaScript 面向对象的拖拽的相关文章

每天一个JavaScript实例-html5拖拽

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>每天一个JavaScript实例-html5拖拽</title> <style> #drop{ width:300px; height:200px; background-

面向对象的拖拽

1.创建一个div,并简单设置样式 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <style type=&qu

JavaScript动画-模拟拖拽

模拟拖拽的原理: x1等于div.offsetLeft y1等于div.offsetTop x2等于ev.clientX(ev表示event事件) y2等于ev.clientY 当我们在方块上按下鼠标的时候,x2-x1即可确定.移动鼠标之后,我们用鼠标当前的位置即x4.y4减去x2-x1.y2-y1就可以得到方块现在的位置. 效果图:点击查看 代码: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 &l

面向对象实现拖拽

<!DOCTYPE html><html><head>    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>    <style type="text/css">        #box{position:absolute; left:100px; top:100px; padding:5px; ba

如何用javascript&amp;nbsp;实现拖拽

JavaScript擅长于修改页面中的DOM元素,但是我们使用JavaScript通常只是实现一些简单功能,例如实现图片的翻转,网页中的标签页,等等.这篇文章将向你展示如何在页面中,对创建的元素实现拖放. 有许多理由让你在页面中加入拖放的功能,其中最简单的理由是重新组织数据.举个例子,你可能希望用户能够重组一系列的页面元素,通过放置一个input或 select组件在各个元素的旁边来代表它们的顺序是一种解决方案,使该组元素可以被拖放是一种替代方案.或者也许你想在网站上拥有一个可以被用户移动的导航

面向对象继承拖拽 写法

JavaScript 智能社 拖拽

<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <style> #div1 {width:100px; height:100px; background:red; position:absolute;} #div2 {width:400px; height:300px; background:#CCC;

拖拽系列二、利用JS面向对象OOP思想实现拖拽封装

接着上一篇拖拽系列一.JavaScript实现简单的拖拽效果这一篇博客将接着对上一节实现代码利用JS面向对象(OOP)思维对上一节代码进行封装; 使其模块化.避免全局函数污染.方便后期维护和调用:写到这里突然想起一句话“没有任何一个题目是彻底完成的.总还会有很多事情可做......” 我想这句话程序开发大概也适用吧,前端开发人员总是可以结合自己之前学到“拖拽”相关知识,不断扩展.完善.无穷无尽.......     利用匿名函数自执行实现封装 ;(function(){ //do somethi

Javascript面向对象拖拽

function Drag(id) { var _this=this; this.disX=0; this.disY=0; this.oDiv=document.getElementById(id); this.oDiv.onmousedown=function(e) { _this.fnDown(e); } } Drag.prototype.fnDown=function(e) { var _this=this; var e=e||event; this.disX=e.pageX-this.o