<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          HTML拖放API實(shí)例分享

          共 2660字,需瀏覽 6分鐘

           ·

          2021-04-06 13:10

          介紹

          HTML拖放API依賴于文檔對(duì)象模型來獲取有關(guān)所拖放內(nèi)容的信息。結(jié)果,它允許我們拖放網(wǎng)頁上的任何元素,并且?guī)缀跛兄髁鳛g覽器都支持它。使用JavaScript事件處理程序,我們可以將任何元素變成可拖動(dòng)的項(xiàng)目或可以放置元素的項(xiàng)目。

          在本文中,我們將學(xué)習(xí)如何使用HTML拖放API。讓我們開始吧。

          在我們開始解釋該API之前,我們先來看一下這個(gè)案例,截圖如下:

          如果你想看完整代碼的話,可以到Codepen上看,

          代碼地址:https://codepen.io/MehdiAoussiad/pen/bGwOwyb

          這個(gè)案例是通過使用HTML拖放API來完成的??雌饋硭坪鹾軓?fù)雜,現(xiàn)在,我們開始研究制作此示例的所有部分。

          讓我們開始吧。

          讓我們從HTML開始。

          在HTML結(jié)構(gòu)中,我們將創(chuàng)建三個(gè)div:一個(gè)可拖動(dòng)div和兩個(gè)div,我們將在其中拖放可拖動(dòng)的div。

          可拖動(dòng)的div必須將draggable設(shè)置為true。然后,我們將添加一些HTML拖放事件屬性,以便在JavaScript中進(jìn)行處理。

          這是HTML示例代碼:

          <body><p>Drag and Drop the violet rectangle in other rectangles.</p><div id="dropHere" ondrop="drop(event)" ondragover="allowDrop(event)"></div><br><div id="div" draggable="true" ondragstart="drag(event)"></div><br><div id="dropHere" ondrop="drop(event)" ondragover="allowDrop(event)"></div></body>

          接著,我們繼續(xù)設(shè)置CSS。

          因此,現(xiàn)在,我們將使用CSS設(shè)置元素樣式。你可以閱讀下面的代碼以查看我們的樣式表。

          CSS代碼如下:

          *{ margin: 0; padding: 0; box-sizing: border-box; font-family: sans-serif;}body{ display: flex; align-items: center; justify-content: center; flex-direction: column; height: 100Vh;}p{ margin: 10px;}#dropHere{ width: 300px; height: 80px; border: 1px solid black; display: flex; align-items: center; justify-content: center;}#div{ background: blueviolet; width: 280px; height: 70px; cursor: grabbing; cursor: -webkit-grabbing; cursor: -moz-grabbing;}

          最終輸出效果:

          最后,是JavaScript部分。

          使用JavaScript,我們將通過創(chuàng)建函數(shù)來處理在HTML中添加的拖放事件屬性。

          這是JavaScript代碼:

          function allowDrop(ev) {  ev.preventDefault();}function drag(ev) {  ev.dataTransfer.setData("text", ev.target.id);}function drop(ev) {  ev.preventDefault();  var data = ev.dataTransfer.getData("text");  ev.target.appendChild(document.getElementById(data));}

          之后,你將能夠在其他兩個(gè)矩形div之間拖放紫色div。現(xiàn)在讓我詳細(xì)解釋所有這些:

          1、在HTML中,我們必須為violet div指定一個(gè)draggable屬性設(shè)置true,以使其成為可拖動(dòng)元素。

          2、ondragstartdraggable元素中的屬性調(diào)用一個(gè)函數(shù)drag(event),該函數(shù)指定要拖動(dòng)的數(shù)據(jù)。該dataTransfer.setData()方法設(shè)置數(shù)據(jù)類型和拖動(dòng)數(shù)據(jù)的值。

          function drag(ev) {  ev.dataTransfer.setData("text", ev.target.id);}

          3、對(duì)于其他兩個(gè)放置紫色矩形的div,事件ondragover 指定可以在何處放置拖動(dòng)的數(shù)據(jù)。因?yàn)槟J(rèn)情況下,不能將元素拖放到其他元素中。為了允許刪除,我們event.preventDefault()在函數(shù)中調(diào)用方法allowDrop。

          4、現(xiàn)在我們只需要?jiǎng)h除即可。當(dāng)拖放的數(shù)據(jù)被放置時(shí),發(fā)生放置事件。這是通過ondrop調(diào)用函數(shù)drop(event)的屬性完成的:

          function drop(ev) {  ev.preventDefault();  var data = ev.dataTransfer.getData("text");  ev.target.appendChild(document.getElementById(data));}
          到這里,我們進(jìn)行調(diào)用preventDefault以防止瀏覽器對(duì)數(shù)據(jù)進(jìn)行默認(rèn)處理(默認(rèn)情況下是作為下拉菜單中的鏈接打開的)。
          我們使用方法獲得拖動(dòng)的數(shù)據(jù)dataTransfer.getData。此方法將返回該方法中設(shè)置為相同類型的所有數(shù)據(jù)setData()。
          所拖動(dòng)的數(shù)據(jù)是所拖動(dòng)元素的ID(“ div”)。
          最后,我們將拖動(dòng)的元素附加到drop元素中。

          結(jié)論

          拖放API是每個(gè)Web開發(fā)人員都必須了解的事情。除了拖放以外,它還提供了多個(gè)其他選項(xiàng)來自定義你的操作。我建議你從其他資源中了解更多有關(guān)它的信息。
          感謝你閱讀本文,希望它對(duì)你有用。

          學(xué)習(xí)更多技能

          請(qǐng)點(diǎn)擊下方web前端開發(fā)


          瀏覽 41
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  狠狠干网站 | 操骚逼网| 国产女人叫床高潮大片免费 | 日韩午夜福利无码一区不卡 | 天天做天天爱夜夜爽 |