HTML5新特性 拖拽使用心得

HTML5新特性 拖拽使用心得

本文主要介紹了拖拽和拖放的幾個屬性

先構(gòu)建一個框架

<div id="wrap">
        <img id="drag" src="" draggable="true">
    <div id="drop" >
        <span>目標區(qū)域</span>
    </div>
</div>  

draggable

為了使元素可拖動屯伞,將draggable屬性設(shè)置為true

<img id="drag" 
     src="b5208ba59f1f064a2d39f991bc1e4dba.jpg" 
     alt="可拖動的圖片"
     draggable="true"/>

ondragstart

作用于拖拽元素上跛锌,當拖拽元素被拖動的時候觸發(fā)此事件

<img id="drag" 
     src="b5208ba59f1f064a2d39f991bc1e4dba.jpg" 
     alt="可拖動的圖片"
     draggable="true" 
     ondragstart="start()"/>

ondragenter

據(jù)張鑫旭的文章《HTML5 drag & drop 拖拽與拖放簡介
》中描述

ondragenter 事件:當拖曳元素進入目標元素的時候觸發(fā)的事件假褪,此事件作用在目標元素上
http://www.zhangxinxu.com/wordpress/2011/02/html5-drag-drop-%E6%8B%96%E6%8B%BD%E4%B8%8E%E6%8B%96%E6%94%BE%E7%AE%80%E4%BB%8B/

目標元素設(shè)置

<div id="drop" 
     ondragenter="enter()">
    目標區(qū)域
</div>

關(guān)于這個屬性,在幾個主流的瀏覽器Safari、Chrome、Firefox鳞贷、Opera下進行了測試。并不是當拖拽元素進入目標元素的時候觸發(fā)虐唠,而是拖拽過程中搀愧,作用于拖拽元素上的拖拽點進入目標元素的時候觸發(fā)。簡而言之,就是鼠標位置進入目標元素所在區(qū)域咱筛,ondragenter事件觸發(fā)搓幌,可觸發(fā)多次。

ondragleave

作用于目標元素上迅箩,拖拽元素上的光標點離開目標區(qū)域時觸發(fā)ondragleave屬性溉愁。

ondragover

作用于目標元素上,當拖拽元素在目標元素上移動的時候觸發(fā)饲趋。經(jīng)測試叉钥,光標在目標元素區(qū)域內(nèi)移動會觸發(fā)ondragover事件,當光標落在目標區(qū)域外篙贸,即使拖拽元素仍在目標區(qū)域內(nèi),ondragover事件無法觸發(fā)

<div id="drop" 
     ondragenter="enter()"
     ondragover="over()">
    目標區(qū)域
</div>

ondrop

作用于目標元素上枫疆,當光標在目標區(qū)域內(nèi)爵川,松開鼠標時觸發(fā)ondrop事件。

<div id="drop" 
     ondragenter="enter()"
     ondragover="over()"
     ondrop="letGo()">
    目標區(qū)域
</div>

注意事項:①需要在ondragover事件中執(zhí)行preventDefault()阻止默認事件息楔,否則無法觸發(fā)ondrop事件寝贡。②需要配合ondragover事件使用。

ondragend

作用于拖拽元素值依,拖拽完成時觸發(fā)

ondragexit

據(jù)點點樂淘淘的文章《H5 拖放事件詳解》描述

dragexit:當元素不再是拖動操作的直接選擇元素時觸發(fā)(很少使用)http://www.cnblogs.com/diantao/p/6282068.html

(既然不常用就先不研究它啦圃泡,需要的時候再補充)

貼一個小demo

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        *{
            transition: 2s;
        }
        #wrap{
            width: 400px;
            padding: 20px 0;
            margin: 0 auto;
            background-color: #e8e5e5;
            text-align: center;
        }
        #drop{
            position: relative;
            width: 300px;
            height: 300px;
            line-height: 300px;
            margin: 0 auto;
            border: 1px solid;
            text-align: center;
            font-size: 30px;
            border-radius: 20%;
        }
        #drag{
            border-radius: 20%;
        }
        #imgWrap{
            width: 250px;
            height: 221px;
            margin: 0 auto;
            margin-bottom: 10px;
        }
        #notice{
            position: absolute;
            width: 100%
        }
        .change{
            animation: change .1s 10;
            /*animation-iteration-count: 10;*/
        }
        @keyframes change{
            0%{
                background-color: #fff;
            }
            100%{
                background-color: red;
            }
        }
    </style>
</head>
<body>
    <div id="wrap">
        <div id="imgWrap">
            <img id="drag" src=""  draggable="true" ondragstart="start()" ondragend="end()">

        </div>
        <div id="drop" ondragenter="enter()" ondragleave="leave()" ondragover="over(event)" ondrop="letGo()">
            <div id="notice">將圖片拖入此處</div>
        </div>
    </div>  
</body>
<script type="text/javascript">
    function start() { // 拖拽元素移動的時候觸發(fā)
        drag.style.opacity = 0;
    }
    function enter() { // 光標進入目標元素區(qū)域的時候觸發(fā)
        drop.className = "change";
        notice.innerHTML = "";
    }
    function leave() { // 光標離開目標元素區(qū)域的時候觸發(fā)
        drop.style.backgroundColor = "";
        drag.style.opacity = 1;
    }
    function over(ev) { // 光標在目標元素區(qū)域內(nèi)移動的時候觸發(fā)
        ev.preventDefault();
        if (drag.style.opacity == 0) {
            drop.style.backgroundColor = "red";
        }
    }
    function letGo() { // 光標在目標元素區(qū)域內(nèi)并松開鼠標的時候觸發(fā)
        drag.style.opacity = 1;
        drop.style.backgroundColor = "";
    }
    function end() { // 拖拽結(jié)束的時候觸發(fā)
        drop.appendChild(drag);
        drag.style.verticalAlign = "middle";
        drag.draggable = false;
    }
</script>
</html>

(有沒有大神教我怎么在代碼塊內(nèi)正確的寫img標簽,我寫的發(fā)布之后總會變樣了愿险,so sad...)
歡迎小伙伴們指正

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末颇蜡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子辆亏,更是在濱河造成了極大的恐慌风秤,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扮叨,死亡現(xiàn)場離奇詭異缤弦,居然都是意外死亡,警方通過查閱死者的電腦和手機彻磁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門碍沐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人衷蜓,你說我怎么就攤上這事累提。” “怎么了恍箭?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵刻恭,是天一觀的道長。 經(jīng)常有香客問我,道長鳍贾,這世上最難降的妖魔是什么鞍匾? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮骑科,結(jié)果婚禮上橡淑,老公的妹妹穿的比我還像新娘。我一直安慰自己咆爽,他們只是感情好梁棠,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著斗埂,像睡著了一般符糊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呛凶,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天男娄,我揣著相機與錄音,去河邊找鬼漾稀。 笑死模闲,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的崭捍。 我是一名探鬼主播尸折,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼殷蛇!你這毒婦竟也來了实夹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤粒梦,失蹤者是張志新(化名)和其女友劉穎收擦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谍倦,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡塞赂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了昼蛀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宴猾。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖叼旋,靈堂內(nèi)的尸體忽然破棺而出仇哆,到底是詐尸還是另有隱情,我是刑警寧澤夫植,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布讹剔,位于F島的核電站油讯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏延欠。R本人自食惡果不足惜陌兑,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望由捎。 院中可真熱鬧兔综,春花似錦、人聲如沸狞玛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽心肪。三九已至锭亏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間硬鞍,已是汗流浹背贰镣。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留膳凝,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓恭陡,卻偏偏與公主長得像蹬音,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子休玩,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

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