成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > html5指南-3.如何實現(xiàn)html元素拖拽功能

html5指南-3.如何實現(xiàn)html元素拖拽功能

熱門標(biāo)簽:標(biāo)準(zhǔn)智能外呼系統(tǒng) 地圖標(biāo)注自己去過的地方 會聲會影怎樣做地圖標(biāo)注效果 洛陽市伊川縣地圖標(biāo)注中心官網(wǎng) 江蘇高頻外呼系統(tǒng)線路 電銷機(jī)器人視頻 高德地圖標(biāo)注錯誤怎么修改 平頂山電子地圖標(biāo)注怎么修改 搜狗星級酒店地圖標(biāo)注
本文的內(nèi)容是關(guān)于在html5中如何實現(xiàn)html元素拖拽功能。在html5之前要實現(xiàn)拖拽,需要借助js,現(xiàn)在html5內(nèi)部就支持了拖拽的功能,但是要實現(xiàn)稍微復(fù)雜的功能還是少不了js的幫忙。下面我們看幾個例子。
1.創(chuàng)建拖拽對象
我們可以通過draggable屬性告訴瀏覽器,哪些元素需要實現(xiàn)拖拽功能。draggable有三個值:true:元素可以被拖拽;false:元素不能被拖拽;auto:瀏覽器自己判斷元素是否能被拖拽。
系統(tǒng)默認(rèn)值是auto,但auto情況下瀏覽器對不同元素拖拽功能的支持是不一樣,如:支持img對象,不支持div對象。所以,如果需要拖拽一個元素,最好還是把draggale設(shè)置為true。下面我們看一個例子:

復(fù)制代碼
代碼如下:

<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style>
#src > *
{
float: left;
}
#target, #src > img
{
border: thin solid black;
padding: 2px;
margin: 4px;
}
#target
{
height: 123px;
width: 220px;
text-align: center;
display: table;
}
#target > p
{
display: table-cell;
vertical-align: middle;
}
#target > img
{
margin: 1px;
}
</style>
</head>
<body>
<div id="src">
<img draggable="true" id="car1" src="img/1.jpg" alt="car1" />
<img draggable="true" id="car2" src="img/2.jpg" alt="car2" />
<img draggable="true" id="car3" src="img/3.jpg" alt="car3" />
<div id="target">
<p id="msg">
drop here</p>
</div>
</div>
<script>
var src = document.getElementById("src");
var target = document.getElementById("target");
</script>
</body>
</html>

運行效果:


2.處理拖拽事件
現(xiàn)在我們來了解拖拽相關(guān)的事件,有兩種類型的事件,一種是拖拽對象的事件,一種是投放區(qū)的事件。拖拽事件包括:dragstart:當(dāng)元素拖拽開始觸發(fā);drag:在元素拖拽過程中觸發(fā);dragend:元素拖拽結(jié)束時觸發(fā)。下面我們就看一個例子:

復(fù)制代碼
代碼如下:

<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style>
#src > *
{
float: left;
}
#target, #src > img
{
border: thin solid black;
padding: 2px;
margin: 4px;
}
#target
{
height: 123px;
width: 220px;
text-align: center;
display: table;
}
#target > p
{
display: table-cell;
vertical-align: middle;
}
#target > img
{
margin: 1px;
}
img.dragged
{
background-color: Orange;
}
</style>
</head>
<body>
<div id="src">
<img draggable="true" id="car1" src="img/1.jpg" alt="car1" />
<img draggable="true" id="car2" src="img/2.jpg" alt="car2" />
<img draggable="true" id="car3" src="img/3.jpg" alt="car3" />
<div id="target">
<p id="msg">
drop here</p>
</div>
</div>
<script>
var src = document.getElementById("src");
var target = document.getElementById("target");
var msg = document.getElementById("msg");
src.ondragstart = function (e) {
e.target.classList.add("dragged");
}
src.ondragend = function (e) {
e.target.classList.remove("dragged");
msg.innerHTML = "drop here";
}
src.ondrag = function (e) {
msg.innerHTML = e.target.id;
}
</script>
</body>
</html>

運行效果:


3.創(chuàng)建投放區(qū)
我們來看投放區(qū)相關(guān)的事件:dragenter:當(dāng)拖拽對象進(jìn)入投放區(qū)時觸發(fā);dragover:拖拽對象在投放區(qū)內(nèi)移動時觸發(fā);dragleave:拖拽對象沒有投放到投放區(qū),離開投放區(qū)的時候觸發(fā);drop:拖拽對象投放在投放區(qū)時觸發(fā)。
我們來看一個例子:

復(fù)制代碼
代碼如下:

<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style>
#src > *
{
float: left;
}
#target, #src > img
{
border: thin solid black;
padding: 2px;
margin: 4px;
}
#target
{
height: 123px;
width: 220px;
text-align: center;
display: table;
}
#target > p
{
display: table-cell;
vertical-align: middle;
}
#target > img
{
margin: 1px;
}
img.dragged
{
background-color: lightgrey;
}
</style>
</head>
<body>
<div id="src">
<img draggable="true" id="car1" src="img/1.jpg" alt="car1" />
<img draggable="true" id="car2" src="img/2.jpg" alt="car2" />
<img draggable="true" id="car3" src="img/3.jpg" alt="car3" />
<div id="target">
<p id="msg">
drop here</p>
</div>
</div>
<script>
var src = document.getElementById("src");
var target = document.getElementById("target");
var msg = document.getElementById("msg");
var draggedID;
target.ondragenter = handleDrag;
target.ondragover = handleDrag;
function handleDrag(e) {
e.preventDefault();
}
target.ondrop = function (e) {
var newElem = document.getElementById(draggedID).cloneNode(false);
target.innerHTML = "";
target.appendChild(newElem);
e.preventDefault();
}
src.ondragstart = function (e) {
draggedID = e.target.id;
e.target.classList.add("dragged");
}
src.ondragend = function (e) {
var elems = document.querySelectorAll(".dragged");
for (var i = 0; i < elems.length; i++) {
elems[i].classList.remove("dragged");
}
}
</script>
</body>
</html>

運行結(jié)果:


4.使用DataTransfer
我們使用DataTransfer從拖拽對象向投放區(qū)傳遞數(shù)據(jù)。DataTransfer有下面的屬性和方法:types:返回數(shù)據(jù)的格式;getData(<format>):返回指定格式數(shù)據(jù);setData(<format>, <data>):設(shè)置指定格式數(shù)據(jù);clearData(<format>):移除指定格式數(shù)據(jù);files:返回已經(jīng)投放的文件數(shù)組。 
我們來看下面的例子,他實現(xiàn)的效果和例3一樣:

復(fù)制代碼
代碼如下:

<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style>
#src > *
{
float: left;
}
#src > img
{
border: thin solid black;
padding: 2px;
margin: 4px;
}
#target
{
border: thin solid black;
margin: 4px;
}
#target
{
height: 123px;
width: 220px;
text-align: center;
display: table;
}
#target > p
{
display: table-cell;
vertical-align: middle;
}
img.dragged
{
background-color: Orange;
}
</style>
</head>
<body>
<div id="src">
<img draggable="true" id="car1" src="img/1.jpg" alt="car1" />
<img draggable="true" id="car2" src="img/2.jpg" alt="car2" />
<img draggable="true" id="car3" src="img/3.jpg" alt="car3" />
<div id="target">
<p id="msg">
drop here</p>
</div>
</div>
<script>
var src = document.getElementById("src");
var target = document.getElementById("target");
target.ondragenter = handleDrag;
target.ondragover = handleDrag;
function handleDrag(e) {
e.preventDefault();
}
target.ondrop = function (e) {
var droppedID = e.dataTransfer.getData("Text");
var newElem = document.getElementById(droppedID).cloneNode(false);
target.innerHTML = "";
target.appendChild(newElem);
e.preventDefault();
}
src.ondragstart = function (e) {
e.dataTransfer.setData("Text", e.target.id);
e.target.classList.add("dragged");
}
src.ondragend = function (e) {
var elems = document.querySelectorAll(".dragged");
for (var i = 0; i < elems.length; i++) {
elems[i].classList.remove("dragged");
}
}
</script>
</body>
</html>

5.拖拽文件
html5支持file api,可以讓我們操作本地文件。一般我們不直接使用file api,我們可以結(jié)合其他特性一起使用,比如結(jié)合拖拽特效,如下例:

復(fù)制代碼
代碼如下:

<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style>
body > *
{
float: left;
}
#target
{
border: medium double black;
margin: 4px;
height: 75px;
width: 200px;
text-align: center;
display: table;
}
#target > p
{
display: table-cell;
vertical-align: middle;
}
table
{
margin: 4px;
border-collapse: collapse;
}
th, td
{
padding: 4px;
}
</style>
</head>
<body>
<div id="target">
<p id="msg">
Drop Files Here</p>
</div>
<table id="data" border="1">
</table>
<script>
var target = document.getElementById("target");
target.ondragenter = handleDrag;
target.ondragover = handleDrag;
function handleDrag(e) {
e.preventDefault();
}
target.ondrop = function (e) {
var files = e.dataTransfer.files;
var tableElem = document.getElementById("data");
tableElem.innerHTML = "<tr><th>Name</th><th>Type</th><th>Size</th></tr>";
for (var i = 0; i < files.length; i++) {
var row = "<tr><td>" + files[i].name + "</td><td>" + files[i].type + "</td><td>" + files[i].size + "</td></tr>";
tableElem.innerHTML += row;
}
e.preventDefault();
}
</script>
</body>
</html>

DataTransfer返回FileList對象,我們可以把他當(dāng)做file數(shù)組對象,file包含下面屬性:name:文件名字;type:文件類型(MIME類型);size:文件大小。
運行效果:


6.上傳文件
下面介紹一個通過拖拽ajax上傳文件的實例。

復(fù)制代碼
代碼如下:

<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style>
.table
{
display: table;
}
.row
{
display: table-row;
}
.cell
{
display: table-cell;
padding: 5px;
}
.label
{
text-align: right;
}
#target
{
border: medium double black;
margin: 4px;
height: 50px;
width: 200px;
text-align: center;
display: table;
}
#target > p
{
display: table-cell;
vertical-align: middle;
}
</style>
</head>
<body>
<form id="fruitform" method="post" action="/UploadHandler.ashx">
<div class="table">
<div class="row">
<div class="cell label">
Bananas:</div>
<div class="cell">
<input name="bananas" value="2" /></div>
</div>
<div class="row">
<div class="cell label">
Apples:</div>
<div class="cell">
<input name="apples" value="5" /></div>
</div>
<div class="row">
<div class="cell label">
Cherries:</div>
<div class="cell">
<input name="cherries" value="20" /></div>
</div>
<div class="row">
<div class="cell label">
File:</div>
<div class="cell">
<input type="file" name="file" /></div>
</div>
<div class="row">
<div class="cell label">
Total:</div>
<div id="results" class="cell">
items</div>
</div>
</div>
<div id="target">
<p id="msg">
Drop Files Here</p>
</div>
<button id="submit" type="submit">
Submit Form</button>
</form>
<script type="text/javascript">
var target = document.getElementById("target");
var httpRequest;
var fileList;
target.ondragenter = handleDrag;
target.ondragover = handleDrag;
function handleDrag(e) {
e.preventDefault();
}
target.ondrop = function (e) {
fileList = e.dataTransfer.files;
e.preventDefault();
}
document.getElementById("submit").onclick = function handleButtonPress(e) {
e.preventDefault();
var form = document.getElementById("fruitform");
var formData = new FormData(form);
if (fileList) {
for (var i = 0; i < fileList.length; i++) {
formData.append("file" + i, fileList[i]);
}
}
httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = handleResponse;
httpRequest.open("POST", form.action);
httpRequest.send(formData);
}
function handleResponse() {
if (httpRequest.readyState == 4 && httpRequest.status == 200) {
var data = JSON.parse(httpRequest.responseText);
document.getElementById("results").innerHTML = "You ordered " + data.total + " items";
}
}
</script>
</body>
</html>

效果:

上面的一些例子不同瀏覽器運行效果可能不同,我用的是chrome瀏覽器,除了例5和6不支持多文件外,其他例子運行正常。大家可以下載demo。
demo下載地址:Html5Guide.draggable.rar

標(biāo)簽:常德 松原 鄂爾多斯 廣西 蚌埠 廣東 阿克蘇 果洛

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《html5指南-3.如何實現(xiàn)html元素拖拽功能》,本文關(guān)鍵詞  html5,指南,-3.,如何,實現(xiàn),;如發(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指南-3.如何實現(xiàn)html元素拖拽功能》相關(guān)的同類信息!
  • 本頁收集關(guān)于html5指南-3.如何實現(xiàn)html元素拖拽功能的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    五月激情婷婷网| 亚洲国产精品久久久久婷婷884| 一级二级三级在线观看| 男人添女人下部高潮视频在观看| 亚洲天堂网2018| 制服诱惑一区二区| 日韩国产激情在线| 久久一区免费| 日韩午夜三级在线| 美女网站视频在线| 国产精品久久久久久久久久久久午夜片| 少妇精品久久久一区二区| 激情欧美亚洲| 国产精品色眯眯| 欧美丰满少妇xxxx| 国产电影一区二区三区爱妃记| 国产精品视频h| av一本在线| av黄色在线看| 欧美黑人猛交的在线视频| 日韩色妇久久av| 欧美高清69hd| free性欧美69巨大| 美女网站色精品尤物极品姐弟| 中文字幕在线中文字幕在线中三区| 中文在线资源天堂| 亚洲成人影院麻豆| 中文字幕在线乱| 国产极品视频| 国产免费一区二区三区四在线播放| 国产女人被狂躁到高潮小说| 国产精品久久久久久久久果冻传媒| 蜜臀久久99精品久久久无需会员| 亚洲一区二区精品| 国产精品中文字幕久久久| 日韩无一区二区| jizz18日本| 日本免费在线播放| 亚洲男人天堂av网| 性xxxfllreexxx少妇| 综合毛片免费视频| 国产又猛又黄的视频| 亚洲美女综合网| 宅男视频免费在线观看视频| 丰满少妇一区二区三区| 亚洲欧美成人精品| 在线中文视频| 精品久久久久久久久久国产| 菠萝蜜视频网址| 色系列之999| 色综合久久九月婷婷色综合| 香蕉视频免费版| 欧美国产偷国产精品三区| 欧美在线一二三| 欧美日韩1080p| 婷婷丁香综合网| 国产福利一区二区三区在线观看| 一本一道久久a久久精品综合蜜臀| 中文字幕乱码亚洲无线精品一区| 中文字幕亚洲一区| 国产精品久久久久久影院8一贰佰| 国产成人精品av在线| 最新高清无码专区| 一道本在线观看| 黄色片子免费看| 久久亚洲精品中文字幕蜜潮电影| 色涩成人影视在线播放| 国产精品一级视频| 一区二区美女| 欧美另类极品videosbest视| 欧美黑人粗大| 欧美成人乱码一区二区三区| 日本精品视频一区二区| 老司机亚洲精品| 无码人妻一区二区三区线| 国产一区二区三区在线观看网站| 免费看黄在线看| 极品白嫩的小少妇| 久久久精品中文字幕麻豆发布| 欧美丝袜自拍制服另类| 蜜臀国产一区二区三区在线播放| 97在线观看免费| 国产超级av| 国产调教在线| 日韩视频第二页| 亚洲欧美日韩中文播放| 日韩小视频在线观看专区| 亚洲高清乱码| 亚洲欧洲在线一区| 韩国在线视频一区| 色婷婷精品大在线视频| 亚洲精品护士| 成人有码视频在线播放| 国产99久久久国产精品免费看| 性视频在线播放| 欧美与黑人午夜性猛交久久久| 久久99精品久久久久久噜噜| 亚洲一区二区三区综合| 国精品无码人妻一区二区三区| 国产秒拍福利视频露脸| 欧美一区二区三区久久精品茉莉花| 亚洲资源网你懂的| 在线免费观看电影网站入口| 亚洲天堂av在线免费观看| 日韩一区二区三区高清| 精品国产乱码久久久久软件| 日韩欧美在线一区| 7777精品伊人久久久大香线蕉经典版下载| 亚洲国产激情一区二区三区| 天天爱天天做天天操| 亚洲欧美激情视频在线观看一区二区三区| 国产精品免费看久久久香蕉| 亚洲调教视频在线观看| 天天舔天天干| 欧洲在线视频| 在线视频日韩欧美| 91国产一区在线| 邪态动恶图27期gif| 欧美电影免费观看完整版| 91九色精品国产一区二区| 亚洲视频1区| 日韩精品在线看片z| 激情小说亚洲图片| 91精品国产乱码久久久久| 欧美在线视频a| 第四色播日韩| 少妇被躁爽到高潮无码文| 国产精品伊人色| 国产呦精品一区二区三区网站| 国产喂奶挤奶一区二区三区| 91九色02白丝porn| 亚洲人成网站777色婷婷| 人妻精品无码一区二区三区| 国产制服丝袜在线| 伊人久久国产精品| 成年人在线视频| 欧美揉bbbbb揉bbbbb| 亚洲一级二级片| 美女少妇精品视频| 国产精品网曝门| 香蕉视频网页版| 偷偷色噜狠狠狠狠的777米奇| 一区二区三区区四区播放视频在线观看| 亚洲精品xxxxx| 奇米色一区二区三区四区| 欧美bbxxx| a级片在线观看| 日韩精品专区在线影院重磅| 超碰免费在线公开| 欧美丰满美乳xxⅹ高潮www| 两性午夜免费视频| av剧情在线观看| 国产成人精品免高潮在线观看| 国产性天天综合网| 国产精品jizz在线观看老狼| 成人性生交大片免费看视频在线| 成人亚洲激情网| 97精品中文字幕| av影片在线| 国产一级一级片| 午夜激情一区二区三区| 亚洲欧洲日产国码二区| 在线观看日本网站| 中文字幕v亚洲ⅴv天堂| 国产一级片91| 激情五月激情综合| 日本福利专区在线观看| 黄色av免费| 欧美国产日韩中文字幕在线| 亚洲日本欧美在线| 男人的天堂av网| 亚洲一区三区视频在线观看| 国语对白在线视频| 日本综合视频| 特大黑人娇小亚洲女mp4| 午夜激情av在线| 欧美成人欧美edvon| 色综合久久天天综合网| 精品中文字幕不卡在线视频| 国内精品在线播放| 亚洲综合第一| 免费激情小视频| 欧美日韩大片一区二区三区| 久久精品国产亚洲blacked| 免费在线观看你懂的| 国内揄拍国内精品| 国产成人精品片| 国产乱码精品一区二区三区av| 欧美午夜不卡视频| 成人看片黄a免费看在线| av网站在线免费| 久久er99热精品一区二区| 农村一级毛片| 成人亚洲精品777777大片| 99精品在线免费视频| 一级视频在线观看| 亚洲国产精品久久久久爰性色| 日韩国产伦理| 久久久久这里只有精品| 国产精品专区在线| 日韩电影免费在线看| 亚洲欧美精品一区二区| 熟女少妇一区二区三区| 亚洲影院污污.| 日日草天天草| 天堂在线中文网| 久久不射中文字幕| 毛毛毛毛毛毛毛片123| 97在线视频免费观看完整版| www.好吊色| 日韩不卡在线观看日韩不卡视频| 高清一区二区三区四区| 高清不卡一区二区三区| 欧美夫妻性生活视频| 日本簧片在线观看| 最近97中文超碰在线| 中文字幕久热精品视频在线| 国产一区在线视频观看| 欧美精品一区二区三区蜜桃| 日韩精品电影一区二区三区| 高清av免费一区中文字幕| 这里只有精品视频在线| 999在线视频| 女女百合国产免费网站| 欧美日韩一区在线观看视频| 中文字幕一区二区三区人妻| 性欧美69式xxxxx| 国产97免费视| 日韩成人av免费| 激情综合网av| 欧美激情国产在线| 久久久久久爱| 成年人观看网站| 成人h动漫免费观看网站| 99热这里只有精品2| 91久久香蕉国产日韩欧美9色| 男人的天堂成人在线| 91精品国自产在线偷拍蜜桃| 免费黄频在线观看| 天天操天天干天天操| 少妇高潮一区二区三区喷水| 日韩理论片在线| 秋霞av鲁丝片一区二区| 久久综合免费视频影院| 国产精品www在线观看| 日本成人在线电影网| 天天色天天爱天天射综合| 97国产精品videossex| 精品少妇无遮挡毛片| 国产精品二区三区| 3d动漫精品啪啪一区二区下载| 欧美 日韩 国产在线| 精品伦理一区二区三区| 黄页网站在线| 欧美不卡高清一区二区三区| 亚洲不卡视频| 一区二区三区中文字幕| 好吊色欧美一区二区三区| 91精品一区二区三区综合| 免费又黄又爽又猛大片午夜| 日本三级免费网站| 日韩中文字幕免费视频| 欧美三级伦理在线| 欧美视频不卡中文| 国产亚洲日本欧美韩国| 中文字幕少妇| 国内精品视频在线播放| 色撸撸在线视频| 日本一二三四高清不卡| 成人午夜影院在线观看| 欧美激情1区2区| 国产精品美女午夜av| 国产一级视频在线播放| 免费在线观看污视频| 国产精品久久久久久久久久久久久久久久| 欧洲美女女同性互添| 成人免费视频网站在线观看| 亚洲成人套图| 国产在线视频一区二区三区| 久久国产亚洲精品无码| 国产精品一级黄| 亚欧美在线观看| 日本小视频在线免费观看| 5月丁香婷婷综合| 日韩aaaaaa| 久久亚洲精精品中文字幕| 欧美xxxxx18| 国产一级大片免费看| 亚洲色图自拍| 久久女同精品一区二区| 欧美午夜电影一区| 无码一区二区三区在线| 伦理片一区二区三区| 国产精品亚洲综合色区韩国| 欧美1级片网站| 久久精品欧美日韩精品| 精品视频二区三区| 中文字幕第一页在线| 日韩黄色影视| 一区二区三区日韩欧美| 日韩美女视频一区二区| 国产乱码精品一区二区三区亚洲人| 色xxx在线播放| 美女扒开尿口让男人操亚洲视频网站| 久久青青草原亚洲av无码麻豆| 五月天婷婷色综合| 亚洲精华国产欧美| 春意影院在线| 亚洲高清中文字幕| 成人影院在线免费观看| 国产精品免费免费| 最新国产成人av网站网址麻豆| 久久久久久久久久久久网站| ㊣最新国产の精品bt伙计久久| 国产一区二区三区四区五区入口| 国产精品99久久久久久宅男| 国产精品国产三级国产专播精品人| 亚洲视频综合网| 男女啪啪无遮挡| 91麻豆精品国产综合久久久| 色天使色偷偷av一区二区| 国产精品区在线观看| a天堂在线观看| 18性欧美xxxⅹ性满足| 浪潮av一区| 蜜桃视频在线观看www社区| 四虎影视成人永久免费观看视频| 加勒比中文字幕精品|