H5ke14--1--拖放

介绍drag,drop

一.被拖动元素,目标(释放区)

元素要设置dragable属性:true,false,auto

被拖动元素上面有三个事件,drag,dragend,按下左键,移动种,鼠标松,这三个事件一般只用获取我们的被拖动元素

冒泡:event是可以继承的,mouseevent鼠标事件,dragevent拖放事件,前面都是一个个继承的

二.释放区:

3个事件:拖动的东西可以放在释放区,进入释放区就会触发dragenter,区域移动触发dragover,出来dragleave,这三个事件一般只用获取我们的释放区元素1

三.放下事件drop


目的:图一弄成图二

方法一:

相比方法二更加精准用的id,

获取事件的元素的id给出来id,我加id这个事件的对象

id=event.target.id;

 event.target.appendChild(document.querySelector("#"+id));

代码三: 解开注释event.target.appendChild(document.querySelector("#"+id));

方法二:

一开始点击就是我们事件的元素给出来obj,然后我放的元素再加入obj!

代码三:下面两个注释解开

source.addEventListener("dragstart",(event)=>{//obj=event.target;}

target.addEventListener("drop",(event)=>{ event.target.appendChild(obj);//w2}

方法三

我们只需要两个引发变量来引发我们的两个事件,以及一个取消默认事件

dragstart用来进行存数据,drop事件设置数据 event.target.appendChild(document.querySelector("#"+event.dataTransfer.getData("text")),        event.preventDefault();


四.解决一:鼠标禁止变成加号,因为默认是不让你放入的

阻止事件的默认行为dragenter和dragover都加上event.preventDefault();就行了.注意这个是在释放区做的,好像阻止dragover就可以了--尴尬--

五.解决二:最终怎么实现要看drop

event.target出发时间的对象

拖的时候记录id

放时候打印

cloneNode进行放的时候克隆,true克隆子子孙孙,false只克隆自己

六.target.addEventListener("drop",(event)=>{event.target.appendChild(document.querySelector("#"+id));
})放下时候,目标元素加上我们的这个标签,getElementById就不用加上"#"

datatransfor对象,传递东西用的键值对

setData有两个参数:
1.第一个参数为携带数据的数据种类的字符串,只能填入类 似“text/plain”或“textml”的表示 MIME类型的文字
2.第二个参数为要携带的数据

 图1图二

1

   let source=document.querySelector("#source");source.addEventListener("dragstart",(event)=>{console.log("kaishi ")})source.addEventListener("dragend",(event)=>{console.log("jieshu")})source.addEventListener("drag",(event)=>{document.title=event.clientX+","+event.clientY;//我的标题设置为鼠标的坐标})

2

 let target=document.querySelector("#target");target.addEventListener("dragenter",(event)=> {console.log("进入目标")})target.addEventListener("dragover",(event)=> {console.log("目标ing")})//匿名函数,取消默认行为target.ondragenter=target.ondragover=function (event){event.preventDefault();} //复制图标target.addEventListener("dragleave",(event)=>{console.log("离开目标")})

3

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><style>#source{width: 200px;height: 200px;background: #eee;}#target{width: 400px;height: 400px;background: yellow;}</style><body><div id="source" draggable="true">  </div><div id="target" >  </div>
<script>//目标进行取消事件的进入//source--------------------------------------------------let source=document.querySelector("#source");let id;source.addEventListener("dragstart",(event)=>{//// console.log("kaishi ")id=event.target.id;obj=event.target;event.dataTransfer.setData("text",event.target.id)//绑定一个事件,那么我后面queryselect就可以id调用// console.log(id)})//     source.addEventListener("dragend",(event)=>{//         console.log("jieshu")//     })////         source.addEventListener("drag",(event)=>{//             document.title=event.clientX+","+event.clientY;//我的标题设置为鼠标的坐标//         })////target--------------------------------------------------let target=document.querySelector("#target");// target.addEventListener("dragenter",(event)=> {//     console.log("进入目标")//     // event.preventDefault();// })target.addEventListener("dragover",(event)=> {// console.log("目标ing")event.preventDefault();})//匿名函数,取消默认行为// target.ondragenter=target.ondragover=function (event){//     event.preventDefault();// } //复制图标// target.addEventListener("dragleave",(event)=>{//     console.log("离开目标")// })target.addEventListener("drop",(event)=>{// alert(event.target.outerHTML)// alert(id);// alert(document.querySelector("#"+id))// let newElement=document.querySelector(id).cloneNode(true);//被拖动达到目标元素// event.target.appendChild(document.querySelector("#"+id));//w1event.target.appendChild(obj);//w2// let source=document.querySelector("#"+event.dataTransfer.getData("text"))//w3// event.target.appendChild(source)// alert(event.dataTransfer.getData("text"))//source})</script></body>
</html>

1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/208988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 修改系统时间,解决更新软件报错问题

ubuntu在更新软件时出现E: Release file for http://security.ubuntu.com/ubuntu/dists/bionic-security/InRelease 错误 网上解决方法一&#xff1a;修改系统时间 修改时区 timedatectl set-timezone Asia/Shanghai 查看当前时间 date -R date -s “2023-12-5 15:57:15” 查看…

C++11多线程基本知识点

文章目录 进程和线程的概念进程和线程的区别 C多线程的基本内容创建线程std::thread线程IDstd::thread对象生命周期和线程等待和分离线程参数传递引用类型成员函数作为线程入口和线程基类的封装lambda临时函数作为线程入口函数lambda函数lambda线程 多线程同步和通信多线程通信…

Python基础(一、安装环境及入门)

一、安装 Python 访问 Python 官方网站 并点击 "Downloads"&#xff08;下载&#xff09;。 在下载页面中&#xff0c;你会看到最新的 Python 版本。选择与你的操作系统相对应的 Windows 安装程序并下载。 双击下载的安装程序&#xff0c;运行安装向导。 在安装向…

$(this) 和 this 关键字在 jQuery 中有何不同?

在jQuery中&#xff0c;$(this)是一个特殊的语法&#xff0c;用于使用jQuery库中的函数和方法来操作当前选择的元素。这个语法将原生的JavaScript "this" 对象包装成一个jQuery对象&#xff0c;使开发者可以使用jQuery提供的丰富功能来处理当前元素。 而在一般的Java…

Redis KEY*模糊查询导致速度慢、阻塞其他 Redis 操作

Redis KEY*模糊查询导致交互速度慢、阻塞其他 Redis 操作 查询速度慢的原因 在Redis中&#xff0c;使用通配符 KEYS 命令进行键的模糊匹配&#xff08;比如 KEYS key*&#xff09;可能会导致性能问题&#xff0c;尤其是在数据集较大时。这是因为 KEYS 命令的实现需要遍历所有…

多个大模型高效部署平台的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

mybatis和mybatisplus中对 同namespace 中id重复处理逻辑源码解析

一、背景 同事在同一个mapper.xml &#xff08;namespace相同&#xff09;&#xff0c;复制了一个sql没有修改id&#xff0c;正常启动项目。但是我以前使用mybatis的时候如果在namespace相同情况下&#xff0c;id重复&#xff0c;项目会报错无法正常启动&#xff0c;后来看代码…

用户帐户限制(例如,时间限制)会阻止你登录。请与系统管理员或技术支持联系以获取帮助。

用户帐户限制(例如&#xff0c;时间限制)会阻止你登录。请与系统管理员或技术支持联系以获取帮助。 在Windows11远程连接Windows10时提示【用户帐户限制(例如&#xff0c;时间限制)会阻止你登录。请与系统管理员或技术支持联系以获取帮助。】我们该如何解决&#xff1a; 1、在…

React聚焦渲染速度

目录 一、引言 二、React.js的渲染速度机制 虚拟DOM Diff算法 三、优化React.js的渲染速度 避免不必要的重新渲染 使用合适的数据结构和算法 使用React Profiler工具进行性能分析 四、实际案例分析 五、总结 一、引言 在当今的Web开发领域&#xff0c;React.js无疑是…

C语言——螺旋矩阵(注释详解)

一、前言&#xff1a; 螺旋矩阵是指一个呈螺旋状的矩阵&#xff0c;它的数字由第一行开始到右边不断变大&#xff0c;向下变大&#xff0c;向左变大&#xff0c;向上变大&#xff0c;如此循环。 二、市面解法&#xff08;较难理解,代码长度短&#xff09;&#xff1a; 根据阶数…

【ARMv8 SIMD和浮点指令编程】浮点数据转换指令——数据类型互转必备

浮点数据转换指令包括不同的浮点精度数之间的转换,还包括整型和浮点数之间的转化。 在了解数据转换指令前,必须学习 IEEE 754 定义的五种舍入规则。前两条规则舍入到最接近的值,其他的称为定向舍入: 舍入到最接近的值 Round to nearest, ties to even – rounds to the n…

Python 多线程和多进程并发执行

Python 多线程和多进程并发执行 引言多线程主要特点和概念多线程的使用threading 模块concurrent.futures 线程池 多进程主要特点和概念&#xff1a;多进程的使用&#xff1a;multiprocessing 模块concurrent.futures 进程池 选择合适的进程数 总结I/O 密集型任务CPU 密集型任务…

js过滤的方法示例

以下是几个常用的 JavaScript 过滤方法示例&#xff1a; filter() filter() 方法创建一个新的数组&#xff0c;其中包含通过测试函数的所有元素。该方法不会改变原始数组。 const numbers [1, 2, 3, 4, 5]; const filteredNumbers numbers.filter(num > num > 3); c…

销售技巧培训之如何提高建材销售技巧

建材销售市场竞争也日趋激烈。在这个充满挑战与机遇的市场中&#xff0c;掌握一定的销售技巧对于一个建材销售人员来说至关重要。本文将结合实际案例&#xff0c;探讨一些实用的建材销售技巧&#xff0c;帮助你更好地拓展业务。 一、了解客户需求 在销售过程中&#xff0c;首先…

sql2005日志文件过大如何清理

由于安装的时候没有计划好空间&#xff0c;默认装在系统盘&#xff0c;而且又没有做自动备份、截断事务日志等&#xff0c;很快LDF文件就达到十几G&#xff0c;或者几十G &#xff0c;此时就不得不处理了。 备份和计划就不说了&#xff0c;现在就说下怎么把它先删除吧&#xf…

【深度学习】一维数组的 K-Means 聚类算法理解

刚看了这个算法&#xff0c;理解如下&#xff0c;放在这里&#xff0c;备忘&#xff0c;如有错误的地方&#xff0c;请指出&#xff0c;谢谢 需要做聚类的数组我们称之为【源数组】 需要一个分组个数K变量来标记需要分多少个组&#xff0c;这个数组我们称之为【聚类中心数组】…

mysql中count(*)、count(1)、count(主键)、count(字段)的区别

文章目录 count函数的语义count(主键)count(1)count(*)count(字段)替代方案explain或者show table status中间表或者其他数据库计数 以下分析都是基于 select count(?) from table 这个语句来分析&#xff0c;不带过滤条件。 count函数的语义 count() 是一个聚合函数&#x…

BFC(Block Formatting Contexts)块级格式化上下文

块格式化上下文&#xff08;block formatting context&#xff09; 是页面上的一个独立的渲染区域&#xff0c;容器里面的子元素不会在布局上影响到外面的元素。它是决定块盒子的布局及浮动元素相互影响的一个因素。 下列情况将创建一个块格式化上下文&#xff1a; 使用float…

阿里云轻量应用服务器与云服务器ECS对比

与云服务器ECS相比&#xff0c;轻量应用服务器使用门槛较低&#xff0c;配置简便&#xff0c;能让您快速上手并部署简单的应用或网站&#xff0c;更适合个人开发者、学生等用户。本文介绍轻量应用服务器与云服务器ECS的特点和区别。 产品对比 轻量应用服务器与云服务器ECS的产…

IO多路转接之select

IO多路转接之select 1. IO多路转接&#xff08;复用&#xff09;2. select2.1 函数原型2.2 细节描述 3. 并发处理3.1 处理流程3.2 通信代码 原文链接 1. IO多路转接&#xff08;复用&#xff09; IO多路转接也称为IO多路复用&#xff0c;它是一种网络通信的手段&#xff08;机…