最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS的拖拽屬性draggable詳解

 更新時(shí)間:2023年04月23日 15:59:30   作者:搞前端的小菜  
這篇文章主要介紹了JS的拖拽屬性draggable詳解,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

摘要

作為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>

現(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ù)原樣的)

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'
  }

(2)drag方法

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

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

(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);
  }

(2)dragover方法

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

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

(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è)方法也是最常用的方法。

到此這篇關(guān)于JS的拖拽屬性draggable的文章就介紹到這了,更多相關(guān)js拖拽屬性draggable內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Javascript生成全局唯一標(biāo)識(shí)符(GUID,UUID)的方法

    Javascript生成全局唯一標(biāo)識(shí)符(GUID,UUID)的方法

    本文給大家匯總介紹了5種使用javascript實(shí)現(xiàn)全局唯一標(biāo)識(shí)符(GUID,UUID)的方法,非常的全面,有需要的小伙伴可以來參考下
    2016-02-02
  • JavaScript實(shí)現(xiàn)橫向滑出的多級(jí)菜單效果

    JavaScript實(shí)現(xiàn)橫向滑出的多級(jí)菜單效果

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)橫向滑出的多級(jí)菜單效果,涉及JavaScript數(shù)學(xué)運(yùn)算及頁(yè)面元素樣式動(dòng)態(tài)變換的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • 解決前端使用xlsx.js工具讀取excel遇到時(shí)間日期少43秒問題

    解決前端使用xlsx.js工具讀取excel遇到時(shí)間日期少43秒問題

    這篇文章主要給大家介紹了關(guān)于如何解決前端使用xlsx.js工具讀取excel遇到時(shí)間日期少43秒問題的相關(guān)資料,xlsx.js是一種前端庫(kù),它可以使您使用JavaScript讀取、解析和導(dǎo)出電子表格文件,如Microsoft Excel,需要的朋友可以參考下
    2024-03-03
  • JS判斷數(shù)組中是否有重復(fù)值得三種實(shí)用方法

    JS判斷數(shù)組中是否有重復(fù)值得三種實(shí)用方法

    數(shù)組中是否有重復(fù)值的判斷方法有很多,本文為大家推薦下比較實(shí)用的3種方法,感興趣的朋友可以參考下,希望對(duì)大家有所幫助
    2013-08-08
  • 微信小程序通過保存圖片分享到朋友圈功能

    微信小程序通過保存圖片分享到朋友圈功能

    小程序內(nèi)是不能直接分享到朋友圈的。所以只能通過生成圖片,攜帶小程序二維碼,保存到手機(jī)相冊(cè),讓用戶自己選擇發(fā)到朋友圈。然后可以通過在小程序中識(shí)別二維碼來進(jìn)入小程序的指定頁(yè)面。下面小編給大家分享實(shí)現(xiàn)代碼,需要的朋友參考下吧
    2018-05-05
  • js正則取值的結(jié)果數(shù)組調(diào)試方法

    js正則取值的結(jié)果數(shù)組調(diào)試方法

    今天小編就為大家分享一篇js正則取值的結(jié)果數(shù)組調(diào)試方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 一文詳解JavaScript如何安全的進(jìn)行數(shù)據(jù)獲取

    一文詳解JavaScript如何安全的進(jìn)行數(shù)據(jù)獲取

    這篇文章主要為大家介紹了JavaScript如何安全的進(jìn)行數(shù)據(jù)獲取方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 深入淺析JS的數(shù)組遍歷方法(推薦)

    深入淺析JS的數(shù)組遍歷方法(推薦)

    這篇文章主要介紹了深入淺析JS的數(shù)組遍歷方法(推薦)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • 三種Webpack打包方式(小結(jié))

    三種Webpack打包方式(小結(jié))

    這篇文章主要介紹了三種Webpack打包方式(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • 百度地圖自定義控件分享

    百度地圖自定義控件分享

    本文給大家介紹的是如何使用百度地圖的自定義控件,附上示例,分享給大家,小伙伴們根據(jù)自己的需求稍微改動(dòng)下即可使用。
    2015-03-03

最新評(píng)論

本溪| 资源县| 海口市| 澄江县| 新丰县| 金秀| 惠水县| 吐鲁番市| 海兴县| 晋城| 股票| 陵水| 阳原县| 鄂托克旗| 错那县| 毕节市| 新乡县| 沅陵县| 沐川县| 仁寿县| 奉节县| 南开区| 文安县| 土默特右旗| 故城县| 寿光市| 麟游县| 本溪市| 深泽县| 白河县| 阿拉善盟| 上蔡县| 湖州市| 阿鲁科尔沁旗| 开江县| 教育| 北票市| 玉溪市| 雅安市| 青川县| 鹤山市|