javascript实现dom元素可拖动

要实现DOM元素可拖动,需要以下步骤:

  1. 给目标元素添加mousedown事件监听器,当鼠标按下时触发事件,并将鼠标在元素上的位置信息存储起来。

  2. document对象添加mousemove事件监听器,当鼠标移动时触发事件,并计算出移动的距离。

  3. mousemove事件中,根据鼠标移动的距离,重新设置目标元素的位置。

  4. 当鼠标松开时,移除事件监听器。

以下是实现DOM元素可拖动的示例代码:

<!-- HTML结构 -->
<div id="draggable">可拖动的元素</div>
// JavaScript代码
var draggable = document.getElementById('draggable');
var mouseX, mouseY, elementX, elementY;

draggable.addEventListener('mousedown', function(event) {
  elementX = draggable.offsetLeft;
  elementY = draggable.offsetTop;
  mouseX = event.pageX - elementX;
  mouseY = event.pageY - elementY;
  document.addEventListener('mousemove', handleMouseMove);
  document.addEventListener('mouseup', handleMouseUp);
});

function handleMouseMove(event) {
  draggable.style.left = (event.pageX - mouseX) + 'px';
  draggable.style.top = (event.pageY - mouseY) + 'px';
}

function handleMouseUp(event) {
  document.removeEventListener('mousemove', handleMouseMove);
  document.removeEventListener('mouseup', handleMouseUp);
}

上面的代码中,首先获取了目标元素draggable的引用,然后在mousedown事件中获取元素当前的位置,并计算出鼠标在元素上的位置偏移量。然后添加mousemovemouseup事件监听器,分别在移动和松开鼠标时触发。在handleMouseMove函数中,根据计算出的偏移量设置元素的位置。在handleMouseUp函数中,移除事件监听器。

下面是另一个实现DOM元素可拖动的示例代码:

<!-- HTML结构 -->
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
  <li>Item 4</li>
</ul>
// JavaScript代码
var items = document.querySelectorAll('li');
var mouseX, mouseY, elementX, elementY, dragging;

for (var i = 0; i < items.length; i++) {
  var item = items[i];
  item.addEventListener('mousedown', handleMouseDown);
  item.addEventListener('mouseup', handleMouseUp);
}

function handleMouseDown(event) {
  dragging = event.target;
  elementX = event.target.offsetLeft;
  elementY = event.target.offsetTop;
  mouseX = event.pageX - elementX;
  mouseY = event.pageY - elementY;
  event.target.style.backgroundColor = '#ddd';
}

function handleMouseUp(event) {
  event.target.style.backgroundColor = '';
}

document.addEventListener('mousemove', handleMouseMove);

function handleMouseMove(event) {
  if (dragging) {
    dragging.style.left = (event.pageX - mouseX) + 'px';
    dragging.style.top = (event.pageY - mouseY) + 'px';
  }
}

上面的代码中,首先获取了所有li元素,并遍历添加mousedownmouseup事件监听器。在handleMouseDown函数中,获取当前按下鼠标的元素,并计算出偏移量,并且给元素加上灰色背景色表明这个元素正在被拖动。在handleMouseUp函数中,通过清空背景色表示这个元素已经不再被拖动了。在handleMouseMove函数中,根据计算出的偏移量设置元素的位置。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript实现dom元素可拖动 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JavaScript 判断判断某个对象是Object还是一个Array

    判断某个对象是Object还是Array,可以通过以下代码实现: if (typeof obj === ‘object’ && obj instanceof Array) { // obj是Array类型 } else { // obj是Object类型 } 关键点解释: typeof obj === ‘object’:使用typeof操作符…

    JavaScript 2023年5月27日
    00
  • JavaScript自定义事件介绍

    以下是JavaScript自定义事件的详细介绍: 什么是JavaScript自定义事件? 在JavaScript中,自定义事件是指可以自定义触发和监听的事件,以便根据需要执行某些操作。 如何定义自定义事件? 我们可以使用原生JavaScript或者第三方库(例如jQuery)来定义自定义事件。以下是几种定义自定义事件的方式: 1. 使用Event对象 con…

    JavaScript 2023年6月10日
    00
  • javascript中String类的subString()方法和slice()方法

    当我们需要对字符串进行裁剪或切片操作时,JavaScript中的String类提供了两个常用的方法:substring()和slice()。这两种方法都能够将一个字符串切分为多个子串,但它们有一些不同之处。 substring()方法 substring()方法用于将字符串中的一部分截取出来,返回一个新的字符串。其接受两个参数,分别代表子字符串的起始位置和终…

    JavaScript 2023年5月28日
    00
  • JavaScript中的console.group()函数详细介绍

    JavaScript中的console.group()函数详细介绍 什么是console.group()函数 console.group()是JavaScript控制台API提供的一种用来组织和显示日志信息的函数。该函数通常与console.log()函数结合使用,可以将日志信息分组显示,使得日志信息更加清晰易读。 如何使用console.group()函数…

    JavaScript 2023年5月28日
    00
  • 利用JavaScript获取用户IP属地方法详解

    标题:利用JavaScript获取用户IP属地方法详解 正文:JavaScript作为Web前端开发中的重要语言,常常需要获取用户的IP地址及其所属位置信息。以下是获取用户IP属地的方法详解: 一、使用第三方API接口 使用第三方API接口是获取用户IP属地信息的一种常见方法。可以调用一些免费的IP地址查询API接口,返回结果中包含用户IP的国家、省份、城市…

    JavaScript 2023年6月11日
    00
  • python 定时器每天就执行一次的实现代码

    Python中实现定时器每天只执行一次的功能,可以使用标准库中的datetime和time模块。下面是完整的攻略: 1.首先导入需要的库 import datetime import time 2.获取当前时间 now = datetime.datetime.now() 3.计算当前时间到第二天凌晨的时间差 tomorrow = now + datetime…

    JavaScript 2023年6月11日
    00
  • js逆向解密之网络爬虫

    下面我将详细讲解关于“js逆向解密之网络爬虫”的完整攻略。这篇攻略包含以下主要内容: 网络爬虫概述 网络爬虫中的JS逆向解密 示例:对bilibili网站使用JS逆向解密进行网络爬虫 网络爬虫概述 网络爬虫是一种利用程序自动抓取网络信息的技术。网络爬虫可以自动访问网络上的网站,获取其中的数据,并将其存储在本地的数据库中供后续分析使用。在网络爬虫的基础上,我们…

    JavaScript 2023年5月28日
    00
  • JS判断表单输入是否为空(示例代码)

    JS判断表单输入是否为空是前端开发中常用的一种技巧,可以通过JS代码来判断用户是否填写了表单输入框,从而提高用户体验和数据输入的准确性。下面将详细讲解如何使用JS判断表单输入是否为空,以及一些示例代码和注意事项。 判断表单输入是否为空 JS判断表单输入是否为空的核心代码如下所示: var input = document.getElementById(&qu…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部