国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

原生JS的拖拽屬性draggable(詳解)

這篇具有很好參考價(jià)值的文章主要介紹了原生JS的拖拽屬性draggable(詳解)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

摘要

作為h5新增的屬性draggable,它能夠給與一切的html元素拖動(dòng)的效果。而在這個(gè)屬性之下,也有著關(guān)于拖動(dòng)效果的各個(gè)方法。
而這一篇文章,主要就是說一下關(guān)于draggable屬性的使用以及工作場(chǎng)景。

1.了解draggable屬性的使用

對(duì)我來講,我希望在學(xué)習(xí)一個(gè)知識(shí)的時(shí)候,最開始就有顯而易見的效果,所以我先寫一個(gè)能夠讓人感受到draggable屬性作用的例子:

對(duì)于拖拽,常見的場(chǎng)景一定有兩個(gè)角色:

(1)拖動(dòng)的元素A
(2)A被拖進(jìn)的元素

現(xiàn)在我們?cè)赽ody中創(chuàng)建兩個(gè)元素:

<body>
  <div id="Adiv" class="A">
    A---拖拽的元素
  </div>
  <div id="Bdiv" class="B">
    B---A被拖進(jìn)的元素
  </div>
</body>

原生JS的拖拽屬性draggable(詳解)
現(xiàn)在我們牢記兩個(gè)點(diǎn):

(1)拖動(dòng)的元素要賦予draggable屬性,屬性值為true
(2)被拖進(jìn)的元素要在dragover和dragenter事件值中阻止默認(rèn)行為。先不需要知道這兩個(gè)事件是做什么的。我們就先這樣寫!

<body>
  <div draggable="true" id="Adiv" class="A">
    A---拖拽的元素
  </div>
  <div id="Bdiv" class="B">
    B---A被拖進(jìn)的元素
  </div>
</body>

<script>
  Bdiv.ondragover = function(e){
    e.preventDefault();
  }
  Bdiv.ondragenter = function(e){
    e.preventDefault();
  }
</script>

此時(shí)A元素就是可以拖入到B元素里面

(這個(gè)時(shí)候注意了,僅僅是效果上的拖入,不可能讓A真正的成為B的子元素,松開鼠標(biāo)后還是會(huì)恢復(fù)原樣的)

原生JS的拖拽屬性draggable(詳解)

2.拖動(dòng)元素A的事件

Ok,現(xiàn)在知道了兩個(gè)重要的角色A和B,現(xiàn)在我們先針對(duì)于A,在它拖動(dòng)的過程中,我們可以控制的事件有哪些:

(1)dragstart方法:

該方法在按下鼠標(biāo)并且移動(dòng)鼠標(biāo)時(shí),會(huì)在A上觸發(fā)該方法。同時(shí)鼠標(biāo)的光標(biāo)會(huì)變成禁用的樣子,直到拖動(dòng)到允許放置A的元素上,禁用的效果就會(huì)消失

而允許放置A的元素,就是剛剛說的在dragover和dragenter中阻止默認(rèn)行為

現(xiàn)在我們用一個(gè)例子來演示這個(gè)方法,我希望在拖動(dòng)A的時(shí)候,能讓A本身變成黃色背景:

  Adiv.ondragstart = function(){
    this.style.backgroundColor = 'yellow'
  }

原生JS的拖拽屬性draggable(詳解)
(2)drag方法

該方法發(fā)生在dragstart之后,只要時(shí)在拖動(dòng)過程之中,該方法就會(huì)持續(xù)觸發(fā)

  Adiv.ondrag = function(){
    console.log('drag事件');
  }

原生JS的拖拽屬性draggable(詳解)
(3)dragend方法

該方法是在拖動(dòng)結(jié)束的時(shí)候觸發(fā),也就是當(dāng)你拖拽后,松開鼠標(biāo)的一瞬間觸發(fā)。


上面的三個(gè)方法,就是針對(duì)于被拖拽的元素的。也就是賦予draggable屬性為true的元素。

一般我們比較常用的方法就是dragstrat方法,通過在這個(gè)方法中將被推拽的元素進(jìn)行保存下來,再進(jìn)行后續(xù)的操作。

3.拖入元素B的事件

針對(duì)于拖入元素的事件,它不需要元素具有draggable屬性,只要你想,任何元素使用這些方法都是可以的。但要記住上面所說的那兩個(gè)方法,阻止事件默認(rèn)行為。

(1)dragenter方法

該方法是指拖拽元素A,在拖入到B之中,B所觸發(fā)的事件。當(dāng)然,任何具有draggable屬性為true的元素,拖入到B中,都會(huì)觸發(fā)改事件。

切記,這里事件的觸發(fā)不需要松開鼠標(biāo)

現(xiàn)在我們用一個(gè)例子來說明,當(dāng)A拖入到B中,我們希望A是真正成為B的子元素:

  Bdiv.ondragenter = function(e){
    e.preventDefault();
    this.appendChild(Adiv);
  }

原生JS的拖拽屬性draggable(詳解)

(2)dragover方法

該方法只要是,拖拽元素A在目標(biāo)元素B中移動(dòng),就會(huì)持續(xù)觸發(fā)。

  Bdiv.ondragover = function(e){
    console.log('dragover事件');
    e.preventDefault();
  }

原生JS的拖拽屬性draggable(詳解)

(3)dragleave方法

該方法指的是拖拽元素A,在從目標(biāo)元素B中離開的時(shí)候,會(huì)觸發(fā)該方法

這里記住,一定是先進(jìn)入到B,再離開B的時(shí)候觸發(fā)該事件,也就是說要先觸發(fā)dragenter方法,才能觸發(fā)dragleave方法

(4)drop方法

該方法是指,拖拽元素A被放置了目標(biāo)元素B中的時(shí)候觸發(fā),那它和dragenter方法的區(qū)別在于,該方法需要鼠標(biāo)松開才會(huì)觸發(fā)。而這個(gè)方法也是最常用的方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-418090.html

到了這里,關(guān)于原生JS的拖拽屬性draggable(詳解)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 原生js實(shí)現(xiàn)拖拽效果

    原生js實(shí)現(xiàn)拖拽效果

    2024年01月16日
    瀏覽(24)
  • 原生JS 表格列拖拽 適用JqGrid

    原生JS 表格列拖拽 適用JqGrid

    頁面引用js就不用多說了,在class添加 不是JqGrid可以注釋這個(gè)

    2024年02月07日
    瀏覽(22)
  • draggable + grid 拖拽插件 + 網(wǎng)格布局 動(dòng)態(tài)生成首頁模版

    draggable + grid 拖拽插件 + 網(wǎng)格布局 動(dòng)態(tài)生成首頁模版

    背景: ? ? ? ? 1、首頁模板由多個(gè)子組件組成,如圖表、新聞、公告、輪播圖等,一般都由前端引入子組件,寫在固定的位置上,最終形成一個(gè)固定的首頁模板; ? ? ? ? 2、像這樣直接在代碼中寫死的首頁沒有靈活性,不同用戶想展示出來的首頁模板千篇一律; ? ? ? ?

    2024年02月01日
    瀏覽(37)
  • 實(shí)現(xiàn)簡單的element-table的拖拽效果

    實(shí)現(xiàn)簡單的element-table的拖拽效果

    第一步,先隨便創(chuàng)建element表格 第二步,里面的數(shù)據(jù)源tableData直接復(fù)制餓了么上的 第三步,需要安裝sortablejs庫并且在頭部引入 第四步,通過ref獲取table,這里給table的ref設(shè)置為dragTable 第五步,就是獲取table然后設(shè)置它的一些屬性,比如拖拽時(shí)的CSS,拖拽時(shí)的一些事件等,然后

    2024年02月11日
    瀏覽(27)
  • 微信小程序中的拖拽和縮放圖片功能

    在現(xiàn)代的移動(dòng)應(yīng)用開發(fā)中,拖拽和縮放功能變得越來越重要。它們不僅使應(yīng)用程序更具交互性,還為用戶提供了更直觀、更高效的使用體驗(yàn)。微信小程序作為一個(gè)流行的開發(fā)平臺(tái),也提供了這樣的功能。以下是在微信小程序中實(shí)現(xiàn)拖拽和縮放圖片的步驟和注意事項(xiàng)。 1.設(shè)置圖

    2024年03月14日
    瀏覽(46)
  • 【ant-design-vue】實(shí)現(xiàn)table的拖拽排序(拖拽行和伸縮列):

    【ant-design-vue】實(shí)現(xiàn)table的拖拽排序(拖拽行和伸縮列):

    1.效果: 拖拽前: 拖拽后: 2.實(shí)現(xiàn): 3.出現(xiàn)的問題: 4.初始拖拽版本: 5.相關(guān)知識(shí):

    2024年02月12日
    瀏覽(22)
  • 【Vue】vue3 v-draggable 拖拽指令封裝

    【Vue】vue3 v-draggable 拖拽指令封裝

    需求:實(shí)現(xiàn)一個(gè)拖拽指令,可在父元素區(qū)域任意拖拽元素,同時(shí)如果傳入的值為 father,則拖拽的時(shí)候以父元素為拖拽對(duì)象 思路: 1、設(shè)置需要拖拽的元素為absolute,其父元素為relative。 2、鼠標(biāo)按下(onmousedown)時(shí)記錄目標(biāo)元素當(dāng)前的 left 和 top 值。 3、鼠標(biāo)移動(dòng)(onmousemove)時(shí)計(jì)算每

    2024年02月16日
    瀏覽(24)
  • Vue中el-table表格的拖拽排序

    element-ui 表格沒有拖拽排序的功能,只能使用sortable.js插件實(shí)現(xiàn)拖拽排序,當(dāng)然也可以應(yīng)用到其他的組件里面,用法類似,這里只說表格。 實(shí)現(xiàn)步驟: 1、安裝sortable.js 2、在需要的頁面中引入 3、實(shí)現(xiàn)表格拖動(dòng)代碼

    2024年02月10日
    瀏覽(19)
  • vue3使用拖拽組件draggable.next的使用教程【保姆級(jí)】

    vue3使用拖拽組件draggable.next的使用教程【保姆級(jí)】

    環(huán)境:vue3+setup語法 首先放官方文檔的鏈接: 中文版本: vue.draggable.next 中文文檔 - itxst.com (民間翻譯) 英文版本:GitHub - SortableJS/vue.draggable.next: Vue 3 compatible drag-and-drop component based on Sortable.js 因?yàn)樽约簩懙倪^程中,官方文檔和網(wǎng)上的資料都非常不明,使用版本各不相同,極

    2024年02月01日
    瀏覽(24)
  • react 基于 dnd-kit 封裝的拖拽排序組件

    react 基于 dnd-kit 封裝的拖拽排序組件

    官網(wǎng)地址 https://docs.dndkit.com/introduction/installation 安裝依賴 簡單使用 建議直接看官網(wǎng),已經(jīng)描述得很詳細(xì)了:https://docs.dndkit.com/presets/sortable 效果展示 注意事項(xiàng) 如果傳入的是一個(gè)函數(shù)式組件,需要用一個(gè)html元素包裹住 這里的排序默認(rèn)是讀取 list 中的 id 作為 key 值的,如果

    2024年02月16日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包