欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

html5指南-3.如何實現html元素拖拽功能_HTML5教程

編輯Tag賺U幣

推薦:html5 Canvas畫圖教程(4)—未閉合的路徑及漸變色的填充方法
一般繪圖的方式有兩種,即填充和描邊,前面的文章已經講了描邊的方法stroke,本文就講一下Canvas中填充圖形的方法

本文的內容是關于在HTML5/">html5中如何實現html元素拖拽功能。在html5之前要實現拖拽,需要借助js,現在html5內部就支持了拖拽的功能,但是要實現稍微復雜的功能還是少不了js的幫忙。下面我們看幾個例子。
1.創建拖拽對象
我們可以通過draggable屬性告訴瀏覽器,哪些元素需要實現拖拽功能。draggable有三個值:true:元素可以被拖拽;false:元素不能被拖拽;auto:瀏覽器自己判斷元素是否能被拖拽。
系統默認值是auto,但auto情況下瀏覽器對不同元素拖拽功能的支持是不一樣,如:支持img對象,不支持div對象。所以,如果需要拖拽一個元素,最好還是把draggale設置為true。下面我們看一個例子:

復制代碼 代碼如下:www.ghpqjb.com

<!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.處理拖拽事件
現在我們來了解拖拽相關的事件,有兩種類型的事件,一種是拖拽對象的事件,一種是投放區的事件。拖拽事件包括:dragstart:當元素拖拽開始觸發;drag:在元素拖拽過程中觸發;dragend:元素拖拽結束時觸發。下面我們就看一個例子:

復制代碼 代碼如下:www.ghpqjb.com

<!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.創建投放區
我們來看投放區相關的事件:dragenter:當拖拽對象進入投放區時觸發;dragover:拖拽對象在投放區內移動時觸發;dragleave:拖拽對象沒有投放到投放區,離開投放區的時候觸發;drop:拖拽對象投放在投放區時觸發。
我們來看一個例子:

復制代碼 代碼如下:www.ghpqjb.com

<!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>

運行結果:


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

復制代碼 代碼如下:www.ghpqjb.com

<!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,我們可以結合其他特性一起使用,比如結合拖拽特效,如下例:

復制代碼 代碼如下:www.ghpqjb.com

<!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對象,我們可以把他當做file數組對象,file包含下面屬性:name:文件名字;type:文件類型(MIME類型);size:文件大小。
運行效果:


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

復制代碼 代碼如下:www.ghpqjb.com

<!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

分享:html5中canvas學習筆記2-判斷瀏覽器是否支持canvas
判斷瀏覽器是否支持canvas,本人搜集整理了一些使用方法,感興趣的朋友可以了解下

來源:未知//所屬分類:HTML5教程/更新時間:2013-04-22
相關HTML5教程
含羞草久久爱69一区| 欧美亚洲高清一区| 国产91|九色| 网站一区二区三区| 国产高清免费观看| 久久成人国产| 欧美日韩国产123区| 97久久精品午夜一区二区| 日韩av无码一区二区三区不卡| 亚洲人视频在线观看| 日本vs亚洲vs韩国一区三区二区 | 亚洲人成免费| 在线国产亚洲欧美| 97中文在线观看| 亚洲性猛交xxxx乱大交| 日韩成人18| 国产午夜亚洲精品不卡| 欧美区二区三区| 国产日韩成人内射视频| 亚洲国产成人精品一区二区三区| 另类国产ts人妖高潮视频| 91精品国产品国语在线不卡| 精品一区二区三区日本| 999精品在线视频| 久久99国内| 亚洲伊人伊色伊影伊综合网| 国产成人涩涩涩视频在线观看| 国产精品久久久久久久99| 羞羞影院欧美| 99久久精品国产一区| 日韩一区二区三区在线播放| 日韩精品―中文字幕| 亚洲天天综合网| 久久综合亚州| 亚洲精品久久久久中文字幕二区| 中文字幕在线中文字幕日亚韩一区| 日韩欧美亚洲视频| 欧美日韩一区自拍| 3d成人h动漫网站入口| 欧洲视频一区二区三区| 日韩成人av毛片| 亚洲国产高清一区二区三区| 91精品国产欧美一区二区| 亚洲精品偷拍| 久久高清国产| 精品国精品国产| 中文字幕一区二区中文字幕| 国产女主播喷水视频在线观看 | 岛国精品在线| 91小视频在线| 欧美大片在线免费观看| 不卡中文字幕在线观看| 国产精品久久乐| 国产精品素人一区二区| 国产成人精品电影| 爱爱的免费视频| 亚洲人成网站77777在线观看| 亚洲一区二区三区在线| 51成人做爰www免费看网站| 四虎永久免费在线| 伊人成综合网| 日韩欧美一级精品久久| 日本人妻伦在线中文字幕| 国产av无码专区亚洲a∨毛片| 国产老妇另类xxxxx| 久久久精品视频成人| 污视频网址在线观看| 99精品视频在线免费播放| 国产精品福利一区二区| 国产精品入口福利| 特黄一区二区三区| 1024精品久久久久久久久| 欧美疯狂性受xxxxx喷水图片| 中文字幕中文字幕在线中一区高清| 一区二区www| 国产福利一区二区| 91精品国产亚洲| 亚洲精品成人无码熟妇在线| 奇米狠狠一区二区三区| 欧美视频一区在线观看| 亚洲一区3d动漫同人无遮挡 | 久久久久久久国产精品影院| 国产成人精品综合| 中文字幕在线观看二区| 欧美久久成人| 亚洲精品中文字幕av| 搡女人真爽免费午夜网站| 四虎精品在线观看| 一区二区在线免费观看| 久久99热只有频精品91密拍| 亚洲中文字幕无码爆乳av| 久久99久久99| 国内精品久久久| 亚洲成人黄色av| 欧美黄色一级视频| 精品小视频在线| 日本免费色视频| 欧美高清视频看片在线观看| 在线观看日韩电影| 草草草视频在线观看| 玛雅亚洲电影| 亚洲欧美国产高清| 女同一区二区| 国产视频在线观看视频| 久久精品夜色噜噜亚洲a∨| 成人免费在线视频网址| 国产精品视频久久久久久久| 美国三级日本三级久久99 | jjzz黄色片| 日韩高清欧美| 日韩精品中文字幕有码专区| 手机av在线免费| 久久综合欧美| 日韩一级二级三级精品视频| 男人舔女人下面高潮视频| av不卡一区二区| 欧美日韩国产bt| 亚洲国产精品久久久久爰色欲| 免费精品一区二区三区在线观看| 色婷婷狠狠综合| 日本精品久久久久久久久久| 福利视频一区| 日韩欧美国产高清91| 麻豆映画在线观看| 成人国产在线| 色噜噜夜夜夜综合网| 免费超爽大片黄| 国产一区二区三区黄网站| 欧美艳星brazzers| 国产在线观看福利| 尤物tv在线精品| 亚洲精品国产福利| 国产一精品一aⅴ一免费| 久久影院100000精品| 亚洲欧洲日产国产网站| 国产精品入口麻豆| 精品1区2区3区4区| 久久影视电视剧免费网站| 五月天精品在线| 国产免费黄色网址| 久久久精品蜜桃| 好看的日韩精品| 亚洲国产精品18久久久久久| 亚洲人成网站精品片在线观看| 色噜噜狠狠色综合网| 久久久久久久| 日韩人在线观看| 亚洲欧洲日产国码无码久久99| 丁香婷婷成人| 精品国产乱码久久久久久免费 | 国产农村妇女精品一区二区| 久久久综合av| 免费毛片一区二区三区| 成人avav影音| 激情视频一区二区| 欧美magnet| 色天使色偷偷av一区二区| 各处沟厕大尺度偷拍女厕嘘嘘| 欧美午夜寂寞| 亚洲日本成人女熟在线观看| 国产av自拍一区| 蜜臀91精品一区二区三区 | 日韩三级视频中文字幕| 亚洲av无码久久精品色欲| 欧美一区国产在线| 欧美疯狂xxxx大交乱88av| 青青草手机视频在线观看| 成人妖精视频yjsp地址| 国产一区二区三区黄| 成人免费看视频网站| 色呦呦国产精品| 精品久久久噜噜噜噜久久图片| 日韩电影在线视频| 欧美大尺度激情区在线播放| 国产精选第一页| 久久久午夜精品理论片中文字幕| 日韩在线观看电影完整版高清免费 | 免费在线视频一区| 91嫩草在线视频| 欧美亚洲精品在线观看| 日韩欧美黄色动漫| 高潮一区二区三区| 亚洲国产一区二区精品专区| 秋霞av国产精品一区| 在线观看免费中文字幕| 亚洲影视在线播放| 日韩 欧美 高清| 欧美69wwwcom| 欧美在线影院在线视频| 国产精品色综合| 黑丝美女久久久| 国产精欧美一区二区三区白种人| 黑人一区二区三区四区五区| 日韩美女免费视频| 99久久免费国产精精品| 色综合视频一区二区三区高清| 亚洲一区二区在线视频观看| 亚洲精品社区| 91免费欧美精品| 3d欧美精品动漫xxxx无尽| 欧美变态tickling挠脚心| av黄色在线免费观看| 国产成人精品三级麻豆| 日韩精品欧美专区| 麻豆一区一区三区四区| 日韩在线观看av| 国产成人一级片| 亚洲综合色婷婷| 精品亚洲一区二区三区四区| 99国产精品久久久久久久| 成人黄色在线免费| 午夜精品成人av| 亚洲精品在线电影| 亚洲AV成人无码精电影在线| xf在线a精品一区二区视频网站| 国产精品88久久久久久妇女| 精品视频亚洲| 欧美中文字幕在线播放| 精品欧美在线观看| 欧美日韩视频在线一区二区| 国产精品久久不卡| 国产999精品久久| 在线观看欧美激情| 不卡av一区二区| 欧美在线亚洲在线| 亚洲 欧美 激情 小说 另类| 日韩网站在线看片你懂的| 少妇愉情理伦三级| 国产日韩三级在线| 精品一区二区中文字幕| 亚洲乱码视频| 国产精品成人一区二区三区| 久久av偷拍| 久久久av一区| 国产又黄又大又爽| 欧美精品v国产精品v日韩精品| 午夜时刻免费入口| 国产三区在线成人av| 88av.com| 奇米影视在线99精品| 日韩av电影免费在线| 国产精品亚洲人成在99www| 1769国产精品| 免费观看亚洲| 亚洲欧美日本精品| 欧美一区免费看| 日本高清免费不卡视频| 一区二区三区久久久久| 国产日本欧洲亚洲| 国产福利影院在线观看| 免费在线成人网| 一本色道久久综合亚洲二区三区| 99国产精品免费视频观看| 精品精品欲导航| 污污的视频在线免费观看| 亚洲图片激情小说| 制服下的诱惑暮生| 国产成人av一区| 自拍日韩亚洲一区在线| 久久福利精品| 伊人情人网综合| 国产专区一区| 久久国产精品亚洲va麻豆| 视频一区中文| 国产日韩在线看片| 亚洲91网站| 97视频在线观看免费| 国产 日韩 欧美一区| 中文字幕无线精品亚洲乱码一区 | 亚洲精品成人久久久| 精品久久免费视频| 欧美视频在线观看免费| av女人的天堂| 亚洲女同一区二区| 久久久久久久人妻无码中文字幕爆| 99这里只有久久精品视频| 欧美日韩在线不卡视频| 麻豆极品一区二区三区| 日本美女爱爱视频| 亚洲伊人婷婷| 久久久成人免费视频| 午夜欧美在线一二页| 国产夫妻性爱视频| 欧洲激情综合| 国产精品情侣自拍| 精品一区二区三区中文字幕在线 | 草视频在线观看| 婷婷激情综合网| 亚洲色图第四色| 亚洲最新在线观看| av网站免费在线看| 亚洲欧美日韩国产综合| 网站免费在线观看| 亚洲色图20p| 国内精品久久99人妻无码| 亚洲欧美一区二区三区久本道91 | 四虎永久国产精品| 合欧美一区二区三区| 亚洲成人蜜桃| 999在线观看精品免费不卡网站| 亚洲欧美国产精品桃花| 伊人狠狠色j香婷婷综合| 午夜一区二区三视频在线观看| 国内精品99| 亚洲精品久久区二区三区蜜桃臀 | 婷婷综合另类小说色区| 99自拍偷拍视频| 欧美视频二区36p| 欧美激情一区二区视频| 欧洲精品在线观看| 黄色激情视频在线观看| 欧美乱妇15p| 免费看污视频的网站| 精品福利视频一区二区三区| 中文字幕在线观看高清| 精品中文字幕久久久久久| 国内毛片毛片毛片毛片| 色哟哟网站入口亚洲精品| jizz内谢中国亚洲jizz| 久久久久久com| 精品一区二区三区在线观看视频| 国产精品jizz在线观看麻豆| 久久人人爽人人爽人人片av不| 91美女片黄在线观看游戏| 久久中文字幕二区| 日本精品一区| 石原莉奈在线亚洲二区| 无码专区aaaaaa免费视频| 国产v综合v亚洲欧| 少妇丰满尤物大尺度写真| 国产精品成人网| 少妇太紧太爽又黄又硬又爽小说 | 日韩电影免费观看高清完整| 一本色道久久精品| 国产综合中文字幕| 成人精品视频一区二区三区| 自拍一级黄色片| 亚洲情趣在线观看| 91免费公开视频| 在线播放日韩导航| 一二三四区在线| 精品国内亚洲在观看18黄| 欧美一区=区三区| 国产精品揄拍一区二区| 欧美gay男男猛男无套| 亚洲午夜激情| 国内成人自拍视频| 亚洲日本黄色片| 一区二区三区日韩欧美| 黄色一级片在线免费观看| 日韩欧美国产小视频| 亚洲精品国产精品国| 欧美精品久久久久久久久久| 成人高潮a毛片免费观看网站| 国产精品 日韩| 国产精品永久| 日本黄色三级大片| 中日韩免费视频中文字幕| 狂野欧美性猛交| 日韩精品一区二| 亚欧洲精品视频| 国产精品久久久久久久久久| 99久久这里只有精品| 一级黄色录像免费看| 国产v综合v亚洲欧| 最新在线黄色网址| 欧美综合色免费| 999av视频| 97视频在线观看亚洲| 国产精品亚洲二区| 做爰高潮hd色即是空| 成人久久久精品乱码一区二区三区| jizz日本免费| 欧美男男青年gay1069videost | 亚洲av无码一区二区三区网址| 一本大道av一区二区在线播放| 五月婷婷激情五月| 欧美精品在线观看| 亚洲精品国产动漫| 亚洲欧美一区二区原创| 成人爽a毛片一区二区免费| 大黑人交xxx极品hd| 欧美日韩国产精品自在自线| 亚洲av无码乱码在线观看性色| 欧美又大又粗又长| 欧美.www| 欧美成人免费高清视频| 亚洲精品国久久99热| yjizz国产| 久久成人精品电影| 免费成人网www| 午夜久久久久久久久久久| 99精品国产一区二区三区不卡| 免费网站在线高清观看| 日韩亚洲电影在线| 日韩亚洲欧美在线| 一级特黄曰皮片视频| 在线播放日韩导航| a一区二区三区| 91久久精品美女高潮|