H5ke14--1--拖放

news2024/11/17 10:31:43

介绍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));//w1
        event.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.coloradmin.cn/o/1295308.html

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

相关文章

可视化监控/安防视频云平台公共区域人员行为安全监控方案

大家在浏览新闻时&#xff0c;经常会看到某某地区有人员摔倒&#xff0c;长时间无人发现或人员闯入某危险区域管理人员未及时劝离&#xff0c;导致发生了意外事故的新闻。由于人力资源和人为巡检能力有限&#xff0c;在很多公共区域无法及时检测人员行为从而导致危险发生。为确…

Spring Boot实现接口幂等

Spring Boot实现接口幂等 1、pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http:…

MagicAnimate

简介 新加坡国立大学 Show 实验室和字节联合做了一项类似的研究。他们提出了一个基于扩散的框架 MagicAnimate&#xff0c;旨在增强时间一致性、忠实地保留参考图像并提升动画保真度。并且&#xff0c;MagicAnimate 项目是开源的&#xff0c;目前推理代码和 gradio 在线 demo …

Java 简易版 TCP(一对一)聊天

客户端 import java.io.*; import java.net.Socket; import java.util.Date; import javax.swing.*;public class MyClient {private JFrame jf;private JButton jBsend;private JTextArea jTAcontent;private JTextField jText;private JLabel JLcontent;private Date data;p…

Esxi7Esxi8设置VMFSL虚拟闪存的大小

Esxi7Esxi8设置VMFSL虚拟闪存的大小 ESXi7,8 默认安装会分配一个 VMFSL(VMFS-L)(Local VMFS)很大空间(120G), 感觉很浪费, 实际给 8G 就可以了, 最少 6G , 经实验,给2G没法安装 . Esxi7是虚拟闪存的 修改的方法是: 在安装时修改 设置 autoPartitionOSDataSize8192 在cdromBoo…

C语言WFC实现绘制Lagrange插值多项式曲线的函数

前言&#xff08;引用&#xff09;&#xff1a; 拉格朗日多项式插值 插值方法有许多&#xff0c;常用的、基本的有&#xff1a;拉格朗日多项式插值、牛顿插值、分段线插值、Hermite插值和三次样条插值。这里只将一下拉格朗日多项式插值法&#xff1a; 方法应用 通缩点说&…

Private Set Intersection from Pseudorandom CorrelationGenerators 最快PSI!导览解读

目录 一、概述 二、相关介绍 三、性能对比 四、技术细节 1.KKRT 2.Pseudorandom Correlation Generators 3.A New sVOLE-Based BaRK-OPRF 4.BaRK-OPRF 五、总结 参考文献 一、概述 这篇文章的主要脉络和核心思想是探讨如何利用伪随机相关生成器&#xff08;PCG&#…

Leetcode—2034.股票价格波动【中等】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—2034.股票价格波动 算法思想 实现代码 class StockPrice { public:int last 0;multiset<int> total;unordered_map<int, int> m;StockPrice() {}void update(int timestamp, int price) {if(m.count(time…

Linux下apisix离线安装教程

Linux下apisix离线安装教程 一、首先需要安装etcd&#xff1a;二、通过rpm离线安装apisix三、启动apisix四、安装apisix-dashboard1、安装2、更改dashboard登录账号名和密码3、运行 一、首先需要安装etcd&#xff1a; 解压缩etcd后执行以下命令&#xff1a; tar -xvf etcd-v3.…

低代码开发到底是补品还是垃圾食品?

2023&#xff0c;低代码彻底火了&#xff0c;甚至火到没有点相关经验&#xff0c;都不好意思出去面试的程度。 从业者对低代码的发展充满了想象&#xff0c;都认为未来低代码的商业价值不可估量。 据Gartner的最新报告显示&#xff0c;2023年全球低代码开发技术市场规模预计将…

AI专题报告:2022年中国人工智能产业研究报告

今天分享的AI系列深度研究报告&#xff1a;《AI专题报告&#xff1a;2022年中国人工智能产业研究报告》。 &#xff08;报告出品方&#xff1a;艾瑞咨询&#xff09; 报告共计&#xff1a;112页 人工智能参与社会建设的千行百业 价值性、通用性、效率化为产业发展战略方向 …

查看虚拟机的版本

1、查看虚拟机的版本 cat /etc/centos-release 2、开启防火墙 systemctl start firewalld 3、查看防火墙状态 firewall-cmd --state

Windows版Minio使用教程(启动,登录,修改密码)

1 、下载安装包 进入官网下载安装包&#xff1a; MinIO | 高性能、支持原生 Kubernetes的对象存储 信任程序安装&#xff0c;就可以啦 2、启动MinIO 第一步&#xff0c;找到minio.exe所在的目录&#xff0c;在地址栏输入cmd进入cmd窗口。 第二步&#xff0c;输入.\minio.exe…

JS加密/解密之HOOK实战2

上一篇文章介绍了HOOK常规的应用场景&#xff0c;这篇我们讲一下HOOK其他原生函数。又是一个新的其他思路 很多时候&#xff0c;当我们想要某些网站的请求参数的时候&#xff0c;因为某些加密导致了获取起来很复杂。 这时候hook就十分方便了 源代码 var _JSON_Parse JSON.…

编译和使用WPS-ghrsst-to-intermediate生成SST

一、下载 V1.0 https://github.com/bbrashers/WPS-ghrsst-to-intermediate/tree/masterV1.5&#xff08;使用过程报错&#xff0c;原因不详&#xff0c;能正常使用的麻烦告知一下方法&#xff09; https://github.com/dmitryale/WPS-ghrsst-to-intermediate二、修改makefile…

在360极速模式下解决使用sortable拖拽元素会启用360文字拖拽功能问题

拖拽元素禁止时&#xff0c;加提示语句 会弹出搜索页签, 因为360自带选中文字&#xff0c;启用搜索引擎的功能,如图所示 苦恼了两天 问了大佬&#xff0c;实际是使用了自带还原生的H5拖拽功能&#xff0c;而sortable.js组件有一个属性forceFallback , 将该属性设置为true 就…

vue3中实现el-tree通过ctrl或shift批量选择节点并高亮展示

一、看效果&#xff1a; 按住ctrl键实现单个多选 按住shift实现区间范围多选 二、代码&#xff1a; vue页面 <template><el-treeclass"w100%":data"$.treeData"ref"treeTab…

2024年强烈推荐mac 读写NTFS工具Tuxera NTFS for Mac2023中文破解版

大家好啊&#xff5e;今天要给大家推荐的是 Tuxera NTFS for Mac2023中文破解版&#xff01; 小可爱们肯定知道&#xff0c;Mac系统一直以来都有一个小小的痛点&#xff0c;就是无法直接读写NTFS格式的移动硬盘和U盘。但是&#xff0c;有了Tuxera NTFS for Mac2023&#xff0c;…

扩散模型实战(十四):扩散模型生成音频

推荐阅读列表&#xff1a; 扩散模型实战&#xff08;一&#xff09;&#xff1a;基本原理介绍 扩散模型实战&#xff08;二&#xff09;&#xff1a;扩散模型的发展 扩散模型实战&#xff08;三&#xff09;&#xff1a;扩散模型的应用 扩散模型实战&#xff08;四&#xff…

微软发布Orca2,“调教式”教会小规模大语言模型如何推理!

我们都知道在大多数情况下&#xff0c;语言模型的体量和其推理能力之间存在着正相关的关系&#xff1a;模型越大&#xff0c;其处理复杂任务的能力往往越强。 然而&#xff0c;这并不意味着小型模型就永远无法展现出色的推理性能。最近&#xff0c;奶茶发现了微软的Orca2公开了…