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.pswp.cn/news/208988.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208988.shtml
英文地址,請注明出處:http://en.pswp.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;機…