<bdo id="vljxk"><rt id="vljxk"><noframes id="vljxk"><noframes id="vljxk"><noframes id="vljxk"><rt id="vljxk"></rt><rt id="vljxk"></rt><noframes id="vljxk"><rt id="vljxk"><delect id="vljxk"></delect></rt><noframes id="vljxk"><rt id="vljxk"></rt><noframes id="vljxk"><noframes id="vljxk"><rt id="vljxk"></rt>

當前位置:首頁 >  站長 >  編程技術 >  正文

Html5原生拖拽相關事件簡介以及基礎實現

 2020-12-02 10:37  來源: 腳本之家   我來投稿 撤稿糾錯

  阿里云優惠券 先領券再下單

這篇文章主要介紹了Html5原生拖拽相關事件簡介以及基礎實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

公司項目需求,要實現任務卡片在不同任務列表之間進行拖拽實現任務類別的更改。于是找了一下相關文章,稍微學習了一下。實現效果如下圖。

拖拽實現

主要用到的是H5自帶的拖拽效果。其實項目前端部分是使用React編寫的,也是在使用H5實現了之后才了解到Dan Abramov大佬有個React-DnD組件對原生拖拽方法進行了封裝。稍微學習了一下,很強。后續有使用到再寫篇文章進行分享。

相關事件定義與用法

涉及一個屬性六個事件。事件均為H5原生事件。

屬性

draggable:正常div是不允許進行拖動的。需要添加屬性draggable="true"將元素設置為可拖動。

事件

ondragstart:拖拽元素事件。在被拖拽時被調用。

ondrag:拖拽元素事件。在元素正在被拖拽時調用。

ondragend:拖拽元素事件。在拖拽元素放置時調用。

ondragenter:放置元素事件。在拖拽元素進入到放置元素有效區域時調用。

ondragover:放置元素事件。在拖拽元素覆蓋放置元素有效區域時調用

ondragleave:放置元素事件。在拖拽元素離開放置元素有效區域時調用。

ondrop:放置元素事件。在拖拽元素被放置在放置元素中調用。

基礎代碼實現

拖拽元素相關事件實現代碼如下。

function handleOndragstart() {
/*
該事件為拖拽元素被拖拽時調用。一般用于獲取該拖拽元素的唯一標識,如id等。以方便后續數據更新時進行元素定位
*/
}

function handleOndragend() {
/*
該事件在拖拽元素被放置時調用。一般用于重置變量操作
*/
}

function handleOndrag() {
/*
該事件憑個人需求進行功能實現
*/
}

拖拽元素H5代碼如下

<div
draggable="true"
ondragstart="handleOndragstart()"
ondrag="handleOndarg()"
ondragend="handleOndragend()"
>
該元素為拖拽元素
</div>

放置元素相關事件實現代碼如下

/*
默認情況下,數據/元素不能放置到其他元素中。 如果要實現該功能,我們需要防止元素的默認處理方法。我們可以通過調用 event.preventDefault() 方法來實現 ondragover 事件。
*/
function handleOndragover(event) {
event.preventDefault();
/*
在這里進行你的函數處理
*/
}

function handleOndragenter(event) {
event.preventDefault();
/*
在這里進行你的函數處理
*/
}

function handleOndragleave(event) {
event.preventDefault();
/*
在這里進行你的函數處理
*/
}

function handleOndrop(event) {
event.preventDefault(); // 清除默認事件。drop 事件的默認行為是以鏈接形式打開
/*
一般在該事件中,也就是拖拽元素被放下的時候與后端進行交互進行數據更新
*/

放置元素H5代碼如下

<div
ondragenter="handleOndragenter(event)"
ondragover="handleOndragover(event)"
ondragleave="handleOndragleave(event)"
ondrop=“handleOndrop(event)
>
該元素為放置元素
</div>

實例

以下代碼可實現在兩個div之間進行子元素的拖拽

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>拖拽實現</title>
<style type="text/css">
.parent {
display: flex;
width: 450px;
justify-content: space-around;
}
.container {
height: 300px;
width: 200px;
background-color: rgba(255, 255, 0, 0.3);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.box {
width: 100px;
height: 50px;
background-color: rgba(255, 255, 255, 1);
}
</style>
<script type="text/javascript">
function handleOndragstart(event) {
// 設置被拖動的數據,可簡單理解為設置Box的值為被拖動元素的id。此處為"Box"
event.dataTransfer.setData("Box", event.target.id);
}
function handleOndragover(event) {
event.preventDefault();
}
function handleOndrop(event) {
// 拖拽元素被放下時調用
event.preventDefault();
var data = event.dataTransfer.getData("Box");
// 將拖拽元素追加到改放置元素中
event.target.appendChild(document.getElementById(data));
}
</script>
</head>

<body>
<div class="parent">
<div
class="container"
ondragover="handleOndragover(event)"
ondrop="handleOndrop(event)"
>
<div
class="box"
draggable="true"
id="Box"
ondragstart="handleOndragstart(event)"
></div>
</div>
<div
class="container"
ondragover="handleOndragover(event)"
ondrop="handleOndrop(event)"
></div>
</div>
</body>
</html>

最后

暫時寫這么多吧。以上的實例也是用H5寫的,并沒有使用React實現。以后再試著寫個React版的簡單demo吧。這應該也算是我的第一篇分享文章,希望能堅持下去。

參考鏈接:

https://www.jb51.net/article/154105.htm

https://www.runoob.com/try/try.php?filename=tryhtml5_draganddrop2

到此這篇關于Html5原生拖拽相關事件簡介以及基礎實現的文章就介紹到這了,更多相關Html5原生拖拽內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

來源:腳本之家

鏈接:https://www.jb51.net/html5/752965.html

申請創業報道,分享創業好點子。點擊此處,共同探討創業新機遇!

相關文章

  • Html5移動端div固定到底部實現底部導航條的幾種方式

    這篇文章主要介紹了Html5移動端div固定到底部實現底部導航條的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

    標簽:
    html5
  • HTML5拖拽文件上傳的示例代碼

    這篇文章主要介紹了HTML5拖拽文件上傳的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

    標簽:
    html5
  • HTML5 層的疊加的實現

    這篇文章主要介紹了HTML5層的疊加的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

    標簽:
    html5
  • HTML5 背景的顯示區域實現

    這篇文章主要介紹了HTML5背景的顯示區域實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

    標簽:
    html5
  • html5關于外鏈嵌入頁面通信問題

    這篇文章主要介紹了html5關于外鏈嵌入頁面通信問題(postMessage解決跨域通信),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

    標簽:
    html5

熱門排行

信息推薦