欧美三区四区_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。下面我們看一個例子:

復制代碼 代碼如下:m.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:元素拖拽結束時觸發。下面我們就看一個例子:

復制代碼 代碼如下:m.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:拖拽對象投放在投放區時觸發。
我們來看一個例子:

復制代碼 代碼如下:m.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一樣:

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

復制代碼 代碼如下:m.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上傳文件的實例。

復制代碼 代碼如下:m.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教程
在线视频亚洲欧美| 91久色porny| 91精品国产一区二区三区| 91老司机在线| 91传媒理伦片在线观看| 亚洲人午夜射精精品日韩| 久久综合激情| 欧美一区二区三区视频免费播放| 国产女主播一区二区| 久久只有这里有精品| 国产精品99久久免费| 暴力调教一区二区三区| 亚洲一区第一页| 日本精品福利视频| 精品人妻一区二区三区潮喷在线| 亚洲一级淫片| 一本大道av伊人久久综合| 成人国产精品av| jlzzjizz在线播放观看| 8090成年在线看片午夜| 日本高清不卡三区| 青青草原在线免费观看| 欧美猛男男男激情videos| 亚洲欧洲精品天堂一级| 91成人精品网站| 亚洲免费在线播放视频| 户外露出一区二区三区| 国产精品系列在线播放| 国产亚洲激情视频在线| 国产免费黄色一级片| 国产一区二区三区三州| 丝袜亚洲另类欧美综合| 精品国产乱码久久久久久免费 | 国产精品无码久久久久一区二区| 99久久久成人国产精品| 久久精品免费在线观看| 久久久久女教师免费一区| 亚洲欧美视频二区| 你懂得影院夜精品a| av电影在线观看不卡| 久久久精品视频在线观看| 国产精品亚洲a| 手机看片一区二区| 国产成人自拍网| 美女av一区二区| 精品亚洲一区二区三区四区| 欧美最新精品| 久久精品在这里| 97久久久免费福利网址| 黑人玩弄人妻一区二区三区| 日本高清久久| 一区二区三区欧美久久| 91免费的视频在线播放| 又嫩又硬又黄又爽的视频| 九一精品国产| 日本韩国一区二区三区视频| 久久av二区| 日本三级网站在线观看| 亚洲第一精品影视| 欧美精品一区二区久久婷婷| www.69av| 丰满人妻一区二区三区无码av | 久久久久久电影| 5566日本婷婷色中文字幕97| 俄罗斯黄色录像| 美腿丝袜亚洲图片| 色综合久久久久综合| 欧美主播一区二区三区美女 久久精品人| 日本高清www免费视频| 国产亚洲精品v| 亚洲色图av在线| 久久久久国产精品熟女影院| 欧美成人精品三级网站| 中文字幕欧美三区| 国产欧美一区二区三区久久| 久久精品日韩无码| 欧美影院一区| 亚洲黄色在线看| 十八禁视频网站在线观看| 国产成人精品123区免费视频| 欧美国产日本视频| 国产日韩欧美另类| 九九九在线视频| av成人激情| 国产一区二区免费| 中文字幕精品一区二区三区在线| 高清不卡一区| 精品久久香蕉国产线看观看亚洲| 欧美一区二区三区精美影视| 一级特黄aa大片| 国产成人高清视频| 日本国产高清不卡| 成年人视频软件| 激情欧美丁香| 在线播放国产精品| 欧美一区二区三区影院| 日本三级久久| 在线电影欧美成精品| 免费人成自慰网站| 激情久久一区二区| 亚洲福利视频三区| 日韩视频精品| 成人免费公开视频| 国产精品看片你懂得| 国产免费高清一区| 欧美性受xxx黑人xyx性爽| 国产成人在线视频网站| 欧美一区二区三区免费观看 | 亚洲国产裸拍裸体视频在线观看乱了 | 久久成人这里只有精品| 国产一级二级视频| 91综合久久| 日韩高清有码在线| 欧美xxxx黑人| 成人在线视频免费观看| 亚洲国内精品在线| 日韩av加勒比| 精品国产一区二区三区av片| 精品成a人在线观看| 国产精品视频分类| 香蕉精品久久| 日韩精品一区国产麻豆| xxxx一级片| 天堂俺去俺来也www久久婷婷| 欧美精品123区| 国产成人av影视| 欧美丝袜足交| 欧美大片在线观看一区| 不用播放器的免费av| 九九综合九九| 日韩成人激情视频| 蜜桃色一区二区三区| 999久久久国产精品| 国产婷婷成人久久av免费高清| 在线免费观看av网| 久久精品高清| 国产亚洲人成网站在线观看| 日韩欧美国产网站| av在线不卡一区| 91国产免费视频| 国产精品欧美精品| 欧美日韩系列| 久久sese| 欧美性猛交xxxxx免费看| 日本手机在线视频| avtt综合网| 欧美成人精品1314www| 天天久久综合网| 天天色综合色| 久久精彩免费视频| www.黄色com| 裸体在线国模精品偷拍| 国产精品网站大全| 中文字幕在线观看国产| 国产精品视频一二| 中文字幕av日韩精品| 久久国内精品| 欧美另类一区二区三区| 天天操天天爱天天爽| 区一区二视频| 精品国产一区二区三区在线观看 | 中文字幕在线视频一区二区三区 | 欧美日韩国产小视频在线观看| 啊啊啊一区二区| 香蕉视频一区| 国产午夜精品免费一区二区三区| 色欲av无码一区二区三区| 久久影院亚洲| 国产精品男女猛烈高潮激情| 亚洲网站在线免费观看| 亚洲日本丝袜连裤袜办公室| 无码人妻精品一区二区三区99v| 成人黄色91| 欧美刺激午夜性久久久久久久| 人妻av一区二区三区| 99在线|亚洲一区二区| 97成人精品区在线播放| 男人天堂视频网| 亚洲欧洲一区二区在线播放| 日本xxxxx18| 久久三级中文| 亚洲精品999| 欧洲美一区二区三区亚洲| 蜜桃免费网站一区二区三区| 亚洲a在线播放| 天堂在线中文网| 欧美日韩在线三级| 亚洲一级片免费观看| 亚洲精品激情| 国产日韩欧美综合| 黄色av网站免费在线观看| 日韩欧美在线看| 久久精品亚洲天堂| 亚洲综合国产| 91亚洲国产成人久久精品网站 | 成人午夜激情片| 麻豆精品蜜桃一区二区三区| 久久国内精品| 亚洲国产私拍精品国模在线观看| 精品无码在线观看| 高清不卡一区二区| 四虎永久国产精品| 国产精品自在| 久久艳片www.17c.com | 3751色影院一区二区三区| 一级黄色片毛片| 久久国内精品自在自线400部| 国产成人看片| а天堂中文最新一区二区三区| 日韩精品免费在线视频观看| 免费一级suv好看的国产网站 | 2023亚洲男人天堂| 99久久精品无免国产免费| 欧美色视频日本版| xxxx视频在线观看| 久久99久久精品欧美| 久久人人九九| 91精品日本| 日韩中文字在线| 69xxxx国产| 午夜av一区二区三区| 欧美性猛交xxxx乱大交91| 日本视频在线一区| 久久国产精品精品国产色婷婷| 国产一区二区久久久久| 在线中文字幕日韩| 亚洲天堂一区在线观看| 亚洲国产综合在线| 青娱乐国产精品视频| 久久成人综合网| 色99中文字幕| 精品国产乱码久久久| 2019中文字幕在线| 日韩性xxxx| 亚洲国产成人精品久久| 99久久婷婷国产综合| 中文字幕一区在线| 69久久久久久| 青青草国产成人99久久| 你懂的视频在线一区二区| 久久久久高潮毛片免费全部播放| 欧美成人免费全部| 国产日韩一级片| 欧美一区二区三区四区五区| 麻豆网址在线观看| 成人欧美一区二区三区| 亚洲天堂国产视频| 久久99精品视频| 亚洲一区精彩视频| 天天av综合| 成人久久久久久久| 精品视频国内| 欧美国产日韩一区二区三区| 亚洲第一页综合| 亚洲精品一区二区三区香蕉| 国产成人精品亚洲男人的天堂 | 在线观看福利片| 久久久久国产精品免费免费搜索| 熟女少妇在线视频播放| 亚洲麻豆av| 欧美精彩一区二区三区| 国产成人久久| 国产精品入口福利| 高清国产一区二区三区四区五区| 久久精品成人欧美大片| 国产女同91疯狂高潮互磨| 欧美成人bangbros| 国产网址在线观看| 欧美日韩国产精品一区| 日韩精品电影一区二区| 国产精品系列在线| 久久久九九九热| 国产成人综合在线| 欧美老熟妇喷水| 免费日本视频一区| 中国一级大黄大黄大色毛片| 精品96久久久久久中文字幕无| 国产日本一区二区三区| 啄木系列成人av电影| 国产精品色悠悠| 亚洲精品18| 热99精品只有里视频精品| 欧美大陆国产| 久久999免费视频| 香蕉视频成人在线| 色天天综合狠狠色| 成人午夜视频一区二区播放| 日韩国产欧美精品在线| 在线观看免费观看在线| 欧美精品一区二区三区蜜桃| 伊人成年综合网| 精品噜噜噜噜久久久久久久久试看 | 色婷婷综合中文久久一本| www.99热| 亚洲国产一区二区a毛片| 手机av免费看| 亚洲综合丝袜美腿| 蜜桃av免费在线观看| 亚洲一区免费视频| 国产黄色片在线| 精品久久久在线观看| 欧美精品久久久久久久久46p| 亚欧色一区w666天堂| 久久久久久国产免费a片| 亚洲国产综合色| 天堂网av2018| 91精品福利视频| 国产精品16p| 这里只有精品免费| 亚洲黄色免费观看| 精品国产人成亚洲区| 中文字幕在线网站| 精品爽片免费看久久| 国产麻豆免费观看| 国产一区二区精品丝袜| 色窝窝无码一区二区三区成人网站| 色哟哟入口国产精品| 亚洲AV第二区国产精品| 欧美二区乱c黑人| 四虎影视成人精品国库在线观看| 97超级碰碰碰久久久| 国产精品a久久久久久| 最新日韩三级| 午夜伦理精品一区| 天堂av一区| 成人午夜小视频| 久久中文字幕二区| 日本精品一区二区三区视频| 亚洲理论在线| 久久综合久久久久| 国产精品18久久久| 国产色视频在线播放| 国产欧美1区2区3区| 中国黄色a级片| 欧美日韩国产色视频| 久久久久久久中文字幕| 日韩一区二区高清| 亚洲中文一区二区三区| 一区二区三区四区精品| 三上悠亚激情av一区二区三区| 高清欧美性猛交xxxx| 7m精品国产导航在线| 91九色在线观看| 91精品推荐| 992tv成人免费观看| 韩国欧美国产一区| 九九九九九伊人| 亚洲视频在线观看一区| 亚洲欧洲综合网| 欧美性生交片4| 一区二区三区在线免费观看视频 | 91九色在线观看视频| 成人一二三区视频| 无码国产精品久久一区免费| 亚洲午夜精品网| 日本三级午夜理伦三级三| 亚洲国产另类 国产精品国产免费| 国产综合在线播放| 午夜伦理精品一区| 香蕉久久夜色精品国产使用方法| 精品欧美日韩在线| 久久蜜桃精品| 日韩一区二区三区不卡视频| 国产精品久久久久影院色老大 | 国产成人在线视频观看| 亚洲精品国精品久久99热一| 亚洲区小说区图片区| 国产精品第1页| 欧美色图一区| 中文字幕一区综合| 国产.欧美.日韩| 五级黄高潮片90分钟视频| 欧美综合在线视频| 一本色道久久综合熟妇| 欧美成人一区在线| 日韩三级毛片| 亚洲激情图片| 国产成人精品免费| 成人精品在线观看视频| 欧美日韩一区中文字幕| 成人黄色免费视频| 日本一区二区在线播放| 亚洲国产精品91| 成年人视频观看| 国产精品人成在线观看免费| 国产老头老太做爰视频| 亚洲精品乱码久久久久久金桔影视| 日韩福利一区| 亚洲一区二区日本| 新狼窝色av性久久久久久| 天天干天天操天天做| 亚洲国产中文字幕| 乱子伦一区二区三区| 欧美片一区二区三区| 在线一级成人| 91视频成人免费| 日本一区二区成人在线| 久操免费在线视频| 亚洲视频网站在线观看| 欧美电影院免费观看|