美文网首页JavaScript
JS面向对象实现简单拖拽心得

JS面向对象实现简单拖拽心得

作者: 杨赛舟 | 来源:发表于2017-10-12 20:37 被阅读0次

一、思路

1 、先用面向对象的方法把拖拽的功能实现

(1)
           先要我们所需要拖拽的物体 DragBox(boxId)
(2)
          然后在得到我们物体的节点属性this.ele = document.getElementById(boxId);
(3)将我们物体的三种方法start、move、stop用对象形式表达出来,为了不占用多的空间我们使用DragBox.prototype.
  (4)因为物体一开始创建就具有拖拽的能力,所以,我们一开始就设置按下的函数this.ele.onmousedown

以下是我们的拖拽代码:

function Dray(boxId){
    if (boxId == undefined)
    {
        return
    }
    this.elem = document.getElementById(boxId);
    var self = this
    this.elem.onmousedown = function (e){
        e.preventDefault();
        self.dateX = e.clientX - self.elem.offsetLeft;
        self.dateY = e.clientY - self.elem.offsetTop;
        self.start();
        document.onmouseup = function (){
            self.stop();
        }
    }
}
Dray.prototype.start = function (){
    var self = this;
    document.onmousemove = function (e){
        var x = e.clientX - self.dateX;
        var y = e.clientY - self.dateY;
        self.move(x, y)
    }
}
Dray.prototype.move = function (x , y){
    var self = this
    self.elem.style.left = x + "px"
    self.elem.style.top = y + "px"
}
Dray.prototype.stop = function (){
    document.onmousemove = null
}

2 、 我们需要重新创建一个html然后将我们的之前下的拖拽代码链接进来;再在body里面设置你所需要拖拽的物体。<script src="DragBox.js"></script>

<style>
        div {
            width: 100px;
            height: 100px;
            background: red;
            position: absolute;
        }

        #box2 {
            background: green;
        }

        #box3 {
            background: blue;
        }
    </style>
  
    <div id="box1"></div>
    <div id="box2"></div>
    <div id="box3"></div>
3、 我们可以用面向对象中的继承来实现拖拽
(1)继承之前拖拽功能的属性
        function DragBoxTaxt(boxId){
        DragBox.call(this,boxId);  
    }

 (2)  继承之前拖拽功能的方法
     DragBoxText.prototype = new DragBox();

(3)还可以修改之前拖拽功能的方法

     DragBoxText.prototype.move = function(x, y) {
        // this.ele.style.left = x + "px";
        // this.ele.style.top = y + "px";
        DragBox.prototype.move.call(this, x, y)

        this.ele.innerHTML = x + ", " + y;
    }

(4)创建对象让他们具有拖拽的功能;
new DragBoxText("box1");
new DragBoxText("box2");
new DragBoxText("box3");

二 、 难点

(1)修改move方法是用到的DragBox.prototype.move.call(this, x, y)
这是是我们有搞懂滴!
(2) 在封装的之前拖拽的代码中if (boxId == undefined){return}

相关文章

  • JS面向对象实现简单拖拽心得

    一、思路 1 、先用面向对象的方法把拖拽的功能实现 以下是我们的拖拽代码: 2 、 我们需要重新创建一个html然...

  • [JS基础]面向对象入门

    重新学习js,当然先从面向对象开始 1、简单实现一个拖拽功能 html就是一个简单的div 面向对象的主要难点就是...

  • 面向对象实现拖拽

    最近看到一篇文章讲了用原生js实现一个拖拽组件,而我自己还没有尝试过写拖拽组件,正好通过这次来实现一个。大致涉及到...

  • 实现拖拽

    原生js实现 HTML5原生实现:拖拽draggable属性、DataTranfers对象

  • JavaScript基础系列之——继承

    一、基本概念: JavaScript基于原型实现面向对象特性,在JS编程中,面向对象的继承是重点,本文将从简单...

  • javascript面向对象封装拖拽插件演示

    简单封装一个拖拽插件,以面向对象方式实现,当然还有其他很多写法,这里简单做个笔记记录一下! Css Html Ja...

  • 面向对象OOP--JS

    作者:烨竹 JS面向对象简介 JS名言:万物皆对象 JS面向对象比PHP简单很多;因为JS中没有class关键字,...

  • 拖拽的面向对象的实现及问题解决

    1、实现过程 拖拽的面向对象实现和面向过程实现的基本方法是一样的,只是采用的是两种不同的思路,一个是面向对象的思路...

  • 面向对象拖拽效果

    面向对象是大部分编程语言的一大重头戏,大型项目都离不开它,今天简单地分享一下用面向对象实现多重效果的拖拽,里面将涉...

  • JS面向对象精要(二)_函数

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

网友评论

    本文标题:JS面向对象实现简单拖拽心得

    本文链接:https://www.haomeiwen.com/subject/qqwoyxtx.html