H5的原生拖拽,拖放事件(drag and drop)

通過??draggable=true??設(shè)置是否可以被拖動(ie這個老表不支持)

  • dragstart:拖拽開始時在被拖拽元素上觸發(fā)此事件,監(jiān)聽器需要設(shè)置拖拽所需數(shù)據(jù),從操作系統(tǒng)拖拽文件到瀏覽器時不觸發(fā)此事件.
  • ragenter:拖拽鼠標(biāo)進入元素時在該元素上觸發(fā),用于給拖放元素設(shè)置視覺反饋,如高亮
  • dragover:拖拽時鼠標(biāo)在目標(biāo)元素上移動時觸發(fā).監(jiān)聽器通過阻止瀏覽器默認行為設(shè)置元素為可拖放元素.
    -dragleave:拖拽時鼠標(biāo)移出目標(biāo)元素時在目標(biāo)元素上觸發(fā).此時監(jiān)聽器可以取消掉前面設(shè)置的視覺效果.
  • drag:拖拽期間在被拖拽元素上連續(xù)觸發(fā)
  • drop:鼠標(biāo)在拖放目標(biāo)上釋放時,在拖放目標(biāo)上觸發(fā).此時監(jiān)聽器需要收集數(shù)據(jù)并且執(zhí)行所需操作.如果是從操作系統(tǒng)拖放文件到瀏覽器,需要取消瀏覽器默認行為.
  • dragend:鼠標(biāo)在拖放目標(biāo)上釋放時,在拖拽元素上觸發(fā).將元素從瀏覽器拖放到操作系統(tǒng)時不會觸發(fā)此事件.
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html" charset="utf-8">
        <title>Scc</title>
        <style>
            div{
                width:600px;
                height:600px;
                border:1px solid black;
                padding-top:20px;
                padding-left:20px;
            }
            #d1{
                float:left;
            }
            #d2{
                float:right;
            }
        </style>
    </head>
    <body>
        <div id="d1">
            <img id="img" src="Koala.jpg">
        </div>
        <div id="d2"></div>
    </body>
    <script>
        var d2=document.getElementById("d2");
        var img=document.getElementById("img");
        img.ondragstart=function(event){
            var data=this.src;
            event.dataTransfer.setData("text",data);
        }
        d2.ondragover=function(event){
            event.preventDefault();
        }
        d2.ondrop=function(event){
            var src=event.dataTransfer.getData("text");
            var i=document.createElement("img");
            i.src=src;
            d2.appendChild(i);
            document.getElementById("d1").removeChild(img);
        }
    </script>
</html>

注意:dataTransfer是全局共享的,可以通過getData()和setData()設(shè)置、獲取數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • H5 meta詳解 viewport width:控制 viewport 的大小,可以指定的一個值,如果 600,...
    FConfidence閱讀 842評論 0 3
  • 拖拽,拖放事件可以通過拖拽實現(xiàn)數(shù)據(jù)傳遞,達到良好的交互效果,如:從操作系統(tǒng)拖拽文件實現(xiàn)文件選擇,拖拽實現(xiàn)元素布局的...
    ConRon閱讀 1,702評論 0 2
  • Range對象的方法 Range對象之cloneRange、cloneContents、extractConten...
    IOLG閱讀 2,277評論 0 1
  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計者無需花費時間糾纏JS復(fù)雜的高級特性。 1....
    LaBaby_閱讀 1,202評論 0 1
  • 能感覺到從身體蒸騰而出的老氣與身體的衰老根源將自己從內(nèi)到外團團包圍,模糊了活力與精彩的世界 。不過時光并非殘暴無情...
    shuying3047閱讀 229評論 0 1