婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > HTML5拖拽API經(jīng)典實例詳解

HTML5拖拽API經(jīng)典實例詳解

熱門標(biāo)簽:南寧點撥外呼系統(tǒng)哪家公司做的好 云南大理400電話申請官方 當(dāng)涂高德地圖標(biāo)注 四川點撥外呼系統(tǒng) 黃島區(qū)地圖標(biāo)注 江蘇智能電銷機器人哪家好 鎮(zhèn)江智能外呼系統(tǒng)有效果嗎 電銷機器人電話用什么卡 成都智能外呼系統(tǒng)平臺

一、關(guān)于拖拽API

拖拽API是HTML5的新特性,相對于其他新特性來說,重要程度占到6成,實際開發(fā)中使用比例占到3成,學(xué)習(xí)要求個人認(rèn)為是達到掌握即可的程度。

二、什么是拖拽和釋放?

拖拽:Drag

釋放:Drop

拖拽指的是鼠標(biāo)點擊源對象后一直移動對象不松手,一但松手即釋放了

三、什么是源對象和目標(biāo)對象?

源對象:指的是我們鼠標(biāo)點擊的一個事物,這里可以是一張圖片,一個DIV,一段文本等等。

目標(biāo)對象:指的是我們拖動源對象后移動到一塊區(qū)域,源對象可以進入這個區(qū)域,可以在這個區(qū)域上方懸停(未松手),可以釋松手釋放將源對象放置此處(已松手),也可以懸停后離開該區(qū)域。

四、拖拽API的相關(guān)函數(shù)

解釋了什么是源對象和目標(biāo)對象后,回歸前端中的拖拽API,由上面的操作我們可以得出幾個函數(shù)

被拖動的源對象可以觸發(fā)的事件:

(1)ondragstart:源對象開始被拖動

(2)ondrag:源對象被拖動過程中(鼠標(biāo)可能在移動也可能未移動)

(3)ondragend:源對象被拖動結(jié)束

  拖動源對象可以進入到上方的目標(biāo)對象可以觸發(fā)的事件:

(1)ondragenter:目標(biāo)對象被源對象拖動著進入

(2)ondragover:目標(biāo)對象被源對象拖動著懸停在上方

(3)ondragleave:源對象拖動著離開了目標(biāo)對象

(4)ondrop:源對象拖動著在目標(biāo)對象上方釋放/松手

拖拽API總共就是7個函數(shù)!!

五、如何在拖動的源對象事件和目標(biāo)對象事件間傳遞數(shù)據(jù)

HTML5為所有的拖動相關(guān)事件提供了一個新的屬性:

e.dataTransfer { }          //數(shù)據(jù)傳遞對象

  功能:用于在源對象和目標(biāo)對象的事件間傳遞數(shù)據(jù)

源對象上的事件處理中保存數(shù)據(jù):

e.dataTransfer.setData( k,  v );     //k-v必須都是string類型

目標(biāo)對象上的事件處理中讀取數(shù)據(jù):

var v = e.dataTransfer.getData( k );

示例一:實現(xiàn)一個可以隨著鼠標(biāo)拖動而移動的小飛機

提示:飛機需要絕對定位!ondrag事件中獲取鼠標(biāo)的坐標(biāo)值!!!

代碼如下:

<!DOCTYPE html>  
<html>  
<head lang="en">  
    <meta charset="UTF-8">  
    <title></title>  
    <style>  
        body{  
            margin:0;  
            position: relative;  
        }  
        img{  
            position:absolute;  
        }  
    </style>  
</head>  
<body>  
<h3>隨著鼠標(biāo)拖動而移動的小飛機</h3>  
<img id="p3" src="img/p3.png" alt=""/>  
<script>  
    p3.ondragstart=function(e){  
        console.log('事件源p3開始拖動');  
        //記錄剛一拖動時,鼠標(biāo)在飛機上的偏移量  
        offsetX= e.offsetX;  
        offsetY= e.offsetY;  
    }  
    p3.ondrag=function(e){  
        console.log('事件源p3拖動中');  
        var x= e.pageX;  
        var y= e.pageY;  
        console.log(x+'-'+y);  
        //drag事件最后一刻,無法讀取鼠標(biāo)的坐標(biāo),pageX和pageY都變?yōu)?  
        if(x==0 && y==0){  
            return; //不處理拖動最后一刻X和Y都為0的情形  
        }  
        x-=offsetX;  
        y-=offsetY;  
        p3.style.left=x+'px';  
        p3.style.top=y+'px';  
    }  
    p3.ondragend=function(){  
        console.log('源對象p3拖動結(jié)束');  
    }  
</script>  
</body>  
</html>  

效果如下:

示例二:

模擬電腦中 ”垃圾桶“的效果, 總共顯示三個小飛機,拖動著某個小飛機到垃圾桶上方后,小飛機從DOM樹上刪除

提示:刪除需要從DOM子節(jié)點中刪除元素,需要阻止ondragover的默認(rèn)行為!!利用源對象和目標(biāo)對象的數(shù)據(jù)傳遞記錄小飛機的ID值!!!

重要信息:

ondragover有一個默認(rèn)行為!!!那就是當(dāng)ondragover觸發(fā)時,ondrop會失效!!!!這個可能是瀏覽器的版本問題,需要以后瀏覽器不斷更新可能才會解決!!

如何阻止?

ondragover= function(e){  //源對象在懸停在目標(biāo)對象上時
  e.preventDefault();  //阻止默認(rèn)行為,使得drop可以觸發(fā)
 .....
}
ondrop= function(e){  //源對象松手釋放在了目標(biāo)對象中
 .....
}

代碼如下:

<!DOCTYPE html>  
<html>  
<head lang="en">  
  <meta charset="UTF-8">  
  <title></title>  
  <style>  
    body {  
      text-align: center;  
    }  
    #trash {  
      opacity: .2;  
      margin: 15px;  
    }  
  </style>  
</head>  
<body>  
  <h3>拖動飛機到垃圾桶后從DOM樹中刪除子元素</h3>  
  <img id="trash" src="img/trash_full.png">  
  <hr/>  
  <img id="p3" class="src" src="img/p3.png">  
  <img id="p4" class="src" src="img/p4.png">  
  <img id="p5" class="src" src="img/p5.png">  
  <script>  
    //為源對象添加事件監(jiān)聽 —— 記錄拖動了哪一個源對象  
    var srcList = document.querySelectorAll('.src');//找到全部img元素  
    for(var i=0; i<srcList.length; i++){ //遍歷img元素  
      var p = srcList[i];  
      p.ondragstart = function(e){ //開始拖動源對象  
        e.dataTransfer.setData('PlaneID',this.id);//保存數(shù)據(jù)--該img元素的id  
      }  
      p.ondrag = function(){}  
      p.ondragend = function(){}  
    }  
    //為目標(biāo)對象添加事件監(jiān)聽 —— 刪除拖動的源對象  
    trash.ondragenter = function(){ //源對象進入目標(biāo)對象  
      console.log('drag enter');  
      trash.style.opacity = "1"; //將透明度變成1  
    }  
    trash.ondragleave= function(){  //源對象離開目標(biāo)對象后  
      console.log('drag leave');  
      trash.style.opacity = ".2"; //將透明度變?yōu)?.2  
    }  
    trash.ondragover= function(e){  //源對象在懸停在目標(biāo)對象上時  
      e.preventDefault();  //阻止默認(rèn)行為,使得drop可以觸發(fā)  
    }  
    trash.ondrop= function(e){ //源對象松手釋放在了目標(biāo)對象中  
      console.log('drop');  
      trash.style.opacity = ".2"; //將透明度變?yōu)?.2  
      //刪除被拖動的源對象  
      var id = e.dataTransfer.getData('PlaneID');//得到數(shù)據(jù)--id值  
      var p = document.getElementById(id); //根據(jù)id值找到相關(guān)的元素  
      p.parentNode.removeChild(p);  //從父元素中刪除子節(jié)點  
    }  
  </script>  
</body>  
</html>  

效果如下:

拖拽小飛機到垃圾桶刪除后:

如圖,原本三架小飛機,現(xiàn)在變成了兩架!!!

六、拖拽API的補充知識點!!(重要,面試中也許會問到噢!!)

面試題:

如何在網(wǎng)頁中顯示客戶端(電腦)的一張圖片?

如何拖動客戶端的網(wǎng)頁顯示在服務(wù)器端下載的頁面中?

這兩個問題是什么意思呢?

我們平時在電腦中拖拽一張圖片到瀏覽器中實現(xiàn)的下載操作!!!按照H5之前的標(biāo)準(zhǔn),要實現(xiàn)直接拖拽一張圖片到瀏覽器中顯示是無法完成!!但是自從H5新特性出來之后增加了拖拽API的特性,完美的實現(xiàn)了這一功能!!!

應(yīng)用場合:

在某網(wǎng)站上,上傳圖片當(dāng)做是頭像

上傳相片...

HTML5新增的文件操作對象:

File: 代表一個文件對象

FileList: 代表一個文件列表對象,類數(shù)組

FileReader:用于從文件中讀取數(shù)據(jù)

FileWriter:用于向文件中寫出數(shù)據(jù)

相關(guān)函數(shù):

div.ondrop = function(e){
var f = e.dataTransfer.files[0];      //找到拖放的文件
var fr = new FileReader();        //創(chuàng)建文件讀取器
fr.readAsURLData(f);         //讀取文件內(nèi)容
fr.onload = function(){       //讀取完成
img.src = fr.result;        //使用讀取到的數(shù)據(jù)
}
 }

代碼如下:

<span style="font-size: 18px;"><!DOCTYPE html>  
<html>  
<head lang="en">  
  <meta charset="UTF-8">  
  <title></title>  
  <style>  
    #container {  
      border: 1px solid #aaa;  
      border-radius: 3px;  
      padding: 10px;  
      margin: 10px;  
      min-height: 400px;  
    }  
  </style>  
</head>  
<body>  
  <h1>拖放API的擴展知識</h1>  
  <h3>請拖動您的照片到下方方框區(qū)域</h3>  
  <div id="container"></div>  
  <script>  
    //監(jiān)聽document的drop事件——取消其默認(rèn)行為:在新窗口中打開圖片  
    document.ondragover = function(e){  
      e.preventDefault(); //使得drop事件可以觸發(fā)  
    }  
    document.ondrop = function(e){  
      e.preventDefault(); //阻止在新窗口中打開圖片,否則仍然會執(zhí)行下載操作!!!  
    }  
    //監(jiān)聽div#container的drop事件,設(shè)法讀取到釋放的圖片數(shù)據(jù),顯示出來  
    container.ondragover = function(e){  
      e.preventDefault();  
    }  
    container.ondrop = function(e){  
      console.log('客戶端拖動著一張圖片釋放了...')  
      //當(dāng)前的目標(biāo)對象讀取拖放源對象存儲的數(shù)據(jù)  
      //console.log(e.dataTransfer); //顯示有問題  
      //console.log(e.dataTransfer.files.length); //拖進來的圖片的數(shù)量  
      var f0 = e.dataTransfer.files[0];  
      //console.log(f0); //文件對象 File  
      //從文件對象中讀取數(shù)據(jù)  
      var fr = new FileReader();  
      //fr.readAsText(f0); //從文件中讀取文本字符串  
      fr.readAsDataURL(f0); //從文件中讀取URL數(shù)據(jù)  
      fr.onload = function(){  
        console.log('讀取文件完成')  
        console.log(fr.result);  
        var img = new Image();  
        img.src = fr.result; //URL數(shù)據(jù)  
        container.appendChild(img);  
      }  
    }  
  </script>  
</body>  
</html></span>  

效果如下:

總結(jié)

以上所述是小編給大家介紹的HTML5拖拽API經(jīng)典實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

標(biāo)簽:十堰 西寧 南京 酒泉 咸寧 淮安 廣西 佳木斯

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《HTML5拖拽API經(jīng)典實例詳解》,本文關(guān)鍵詞  HTML5,拖拽,API,經(jīng)典,實例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5拖拽API經(jīng)典實例詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于HTML5拖拽API經(jīng)典實例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    9人人澡人人爽人人精品| 国产一区二区三区最好精华液| 亚洲精品成人天堂一二三| 国产福利一区二区三区视频在线 | 精品日韩在线观看| 婷婷中文字幕一区三区| 欧美二区三区的天堂| 老汉av免费一区二区三区| 久久众筹精品私拍模特| 国产成人综合在线观看| 亚洲视频免费在线| 欧美在线短视频| 欧美a一区二区| 精品不卡在线视频| 91麻豆国产精品久久| 午夜精品福利一区二区三区av | 国产91精品一区二区| 国产欧美精品一区二区色综合 | 成人18精品视频| 亚洲免费观看高清完整 | 这里只有精品电影| 国产高清亚洲一区| 亚洲图片欧美综合| 久久亚洲综合色| 91免费在线看| 精品一区二区在线播放| 自拍偷拍国产亚洲| 精品理论电影在线观看| 色婷婷一区二区三区四区| 日本亚洲一区二区| 国产精品不卡在线观看| 日韩欧美区一区二| 在线视频欧美区| 国产酒店精品激情| 日韩精品五月天| 1000部国产精品成人观看| 欧美成人猛片aaaaaaa| 色婷婷亚洲综合| 不卡高清视频专区| 麻豆精品在线播放| 三级精品在线观看| 一区二区三区在线观看动漫| 国产亚洲欧美激情| 久久免费国产精品 | 97久久超碰精品国产| 日韩av成人高清| 亚洲高清视频的网址| 国产精品久久久久久久岛一牛影视| 欧美一区午夜视频在线观看| 在线欧美小视频| av午夜精品一区二区三区| 精品夜夜嗨av一区二区三区| 亚洲一区免费视频| 一区二区三区四区中文字幕| 国产精品天干天干在观线| 久久免费看少妇高潮| 精品国产百合女同互慰| 日韩欧美一区在线| 在线播放中文一区| 69堂精品视频| 欧美精品久久久久久久多人混战| 一本色道**综合亚洲精品蜜桃冫| 成人黄色综合网站| 91在线视频在线| 欧日韩精品视频| 欧美日韩精品一二三区| 欧美日韩国产天堂| 欧美高清激情brazzers| 337p亚洲精品色噜噜噜| 欧美成va人片在线观看| 久久综合九色综合97_久久久| 精品国产凹凸成av人导航| 久久久欧美精品sm网站| 欧美激情资源网| 18欧美乱大交hd1984| 一区二区三区不卡视频在线观看 | 成人免费毛片片v| 成人h动漫精品| 99久久精品免费看| 在线观看三级视频欧美| 欧美日韩一区中文字幕| 日韩女优av电影在线观看| 精品国产乱码久久久久久浪潮 | 欧美激情一区二区三区蜜桃视频 | 国产一区激情在线| 成人黄色片在线观看| 欧美日韩亚洲综合一区二区三区| 欧美酷刑日本凌虐凌虐| 精品国产精品一区二区夜夜嗨| 国产精品久久久久久一区二区三区| 亚洲国产精品v| 日韩精品乱码免费| 夜夜夜精品看看| 秋霞电影网一区二区| 成人午夜电影久久影院| 欧美这里有精品| 欧美一区二区三级| 中文字幕免费一区| 青青草国产成人99久久| 99久久精品国产精品久久| 欧美人体做爰大胆视频| 日韩三级免费观看| 亚洲人成人一区二区在线观看| 午夜激情一区二区| 国产 欧美在线| 日韩欧美一区二区免费| 国产精品久久久久久久久搜平片 | 午夜亚洲福利老司机| 麻豆精品视频在线| 在线观看网站黄不卡| 精品日韩成人av| 亚洲激情图片一区| 精品一区二区在线播放| 欧美优质美女网站| 精品国产成人系列| 日韩激情在线观看| 欧美私人免费视频| 一区二区三区国产精品| 成人网在线播放| 欧美精品黑人性xxxx| 国产精品全国免费观看高清| 老司机精品视频线观看86| 欧美日韩国产综合一区二区三区| 亚洲国产高清在线观看视频| 日韩综合小视频| 欧美精品一二三| 亚洲欧美一区二区三区久本道91| 高清在线不卡av| 国产肉丝袜一区二区| 久久91精品国产91久久小草| 欧美日韩一区成人| 一片黄亚洲嫩模| 色域天天综合网| 国产精品免费久久| 成人av综合一区| 国产精品久久久久精k8| 91亚洲精品久久久蜜桃网站| 日韩伦理av电影| 成人蜜臀av电影| 久久免费美女视频| 国产91精品露脸国语对白| 久久精品亚洲麻豆av一区二区| 免费不卡在线视频| 亚洲精品一区二区三区蜜桃下载| 精品亚洲aⅴ乱码一区二区三区| 欧美丰满高潮xxxx喷水动漫| 蜜桃视频一区二区三区| 日韩一卡二卡三卡| 午夜视频一区二区| 欧美另类videos死尸| 蜜桃视频在线观看一区| 欧美伦理影视网| 国产一区二区三区在线观看免费| 久久久国产精品不卡| 成人a区在线观看| 亚洲影视资源网| 色综合天天综合狠狠| 亚洲午夜激情av| 久久综合久久综合久久综合| 成人av在线一区二区三区| 中文字幕+乱码+中文字幕一区| 日本精品一区二区三区高清| 午夜精品久久久久久久久| 日韩视频在线一区二区| 国产尤物一区二区在线| 最新热久久免费视频| 欧美一区二区三区免费观看视频| 国产成人午夜精品影院观看视频| 亚洲男人的天堂在线aⅴ视频| 91婷婷韩国欧美一区二区| 日韩精品欧美精品| 中文一区一区三区高中清不卡| 色女孩综合影院| 国内精品第一页| 亚洲小说欧美激情另类| 久久欧美一区二区| 欧美久久久影院| 成人久久久精品乱码一区二区三区 | 蜜桃精品在线观看| 国产日产欧美一区二区视频| thepron国产精品| 日本成人在线视频网站| 有坂深雪av一区二区精品| 精品国产成人在线影院 | 欧美色网站导航| 国产精品一区二区三区99| 亚洲一区二区三区四区在线观看| 久久久久九九视频| 欧美精品自拍偷拍动漫精品| 色欧美片视频在线观看在线视频| 国产精一区二区三区| 男女性色大片免费观看一区二区| 国产精品久久久久影院老司| 久久你懂得1024| 精品免费99久久| 欧美日韩成人综合天天影院 | 日韩欧美一卡二卡| 色综合久久中文字幕| 91免费视频网| 成人午夜私人影院|