js面向对象方式实现拖拽效果
导读:收集整理的这篇文章主要介绍了js面向对象方式实现拖拽效果,觉得挺不错的,现在分享给大家,也给大家做个参考。 本文实例为大家分享了js面向对象方式实现拖拽的具体代码,供大家参考,具体内容如...
收集整理的这篇文章主要介绍了js面向对象方式实现拖拽效果,觉得挺不错的,现在分享给大家,也给大家做个参考。 本文实例为大家分享了js面向对象方式实现拖拽的具体代码,供大家参考,具体内容如下
拖拽功能的实现原理:(直接拿走!)
!DOCTYPE htML>
html lang="en">
head>
meta charset="UTF-8">
meta name="viewport" content="width=device-width, inITial-scale=1.0">
meta http-equiv="X-UA-Compatible" content="ie=Edge">
title>
Document/title>
style>
#box {
position: absolute;
left: 100px;
top: 100px;
width: 100px;
height: 100px;
background: red;
}
#box2 {
position: absolute;
left: 200px;
top: 200px;
width: 100px;
height: 100px;
background: green;
}
/style>
/head>
body>
div id="box">
文字/div>
div id="box2">
文字/div>
/body>
script>
class Drag {
startMouse = {
}
;
startEl = {
}
;
#el = null;
constructor(el, option) {
this.#el = el;
this.option = option;
this.start();
}
start() {
let move = (e) =>
{
this.move(e) }
this.#el.addEventListener('mousedown', (e) =>
{
this.startMouse = {
x: e.clientX, y: e.clientY, }
this.ondragstart &
&
this.ondragstart(e) this.startEl = this.getOffset();
document.addEventListener('mouSEMove', move);
document.addEventListener('mouseup', (e) =>
{
document.removeEventListener('mousemove', move);
this.end(e);
}
, {
once: true }
) e.preventDefault();
}
) }
move(e) {
let nowMouse = {
x: e.clientX, y: e.clientY, }
let disMouse = {
x: nowMouse.x - this.startMouse.x, y: nowMouse.y - this.startMouse.y }
this.ondrag &
&
this.ondrag(e) this.setOffset(disMouse) }
end(e) {
this.ondragend &
&
this.ondragend(e) }
getOffset() {
return {
x: parseFloat(getComputedStyle(this.#el)["left"]), y: parseFloat(getComputedStyle(this.#el)["top"]) }
}
setOffset(dis) {
this.#el.style.left = this.startEl.x + dis.x + 'px' this.#el.style.top = this.startEl.y + dis.y + 'px' }
}
let box = document.querySelector("#box");
let box2 = document.querySelector("#box2");
let d = new Drag(box);
let d2 = new Drag(box2);
let clonex = null;
d2.ondragstart = (e) =>
{
clonex = box2.cloneNode(true);
document.body.appendChild(clonex) box2.style.opacity = 0.5 }
d2.ondragend = () =>
{
document.body.removeChild(clonex);
box2.style.opacity = 1 }
/script>
/html>
最终效果(拖动的为绿色块)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
您可能感兴趣的文章:- javascript的面向对象编程一起来看看
- 详解JavaScript面向对象实战之封装拖拽对象
- JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
- JavaScript面向对象核心知识与概念归纳整理
- JavaScript面向对象之七大基本原则实例详解
- JavaScript的面向对象你了解吗
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: js面向对象方式实现拖拽效果
本文地址: https://pptw.com/jishu/594668.html
