《初级前端1.11》HTML5拖放——drag,drop,FileReader
在HTML5中,拖放是标准的一部分,任何元素都能够拖放。
核心内容:使用HTML5新特性,完成资源拖放,放置位置。
HTML5拖放

index.html:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>拖放</title> <style type="text/css"> .box{ width: 400px; height: 400px; float: left; } #box1{ background: #ccc; } #box2{ background: #CFE0F8; } </style> <script type="text/javascript" src="app.js"></script> </head> <body> <div id="box1" class="box"></div> <div id="box2" class="box"></div> <img id="img1" src="tx.png" height="200" width="200"> </body> </html>
app.js:
var box1Div, box2Div, msgDiv, img1; window.onload = function() { box1Div = document.getElementById("box1"); box2Div = document.getElementById("box2"); msgDiv = document.getElementById("msg"); img1 = document.getElementById("img1"); // box1Div.ondragenter = function(e){ // showObj(e); // } box1Div.ondragover = function(e) { e.preventDefault(); } box2Div.ondragover = function(e) { e.preventDefault(); } img1.ondragstart = function(e) { e.dataTransfer.setData("imgId", "img1"); //设置被拖动的元素 //console.log(e.target); } //落点元素的处理方法 box1Div.ondrop = dropImghandler; box2Div.ondrop = dropImghandler; } function dropImghandler(e) { console.log(e); var img = document.getElementById(e.dataTransfer.getData("imgId")); //获取被拖动的元素的id e.target.appendChild(img); //e.target表示落点元素,将被拖动的元素添加到落点元素中 }
效果:
===> 
HTML5拖放本地资源
拖放本地资源,不同于网页元素(不使用ondragstart和setData,getData)。它是用了FileReader获取本地资源的信息,转化成base64的url,来写入到网页元素中。
我们来看下面的例子:
index1.hmtl
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>拖放本地资源</title> <style type="text/css"> #imgContainer{ background: #ccc; width: 500px; height: 500px; } </style> <script type="text/javascript" src="app1.js"></script> </head> <body> <div id="imgContainer"></div> </body> </html>
app1.js
var imgContainer; window.onload = function(){ imgContainer = document.getElementById("imgContainer"); imgContainer.ondragover = function(e){ e.preventDefault(); } //拖动本地资源并放到元素中时,调用fileReader的onload方法, //获取图片信息并显示到元素中 imgContainer.ondrop = function(e){ e.preventDefault(); // console.log(e.dataTransfer.files); console.log(e.dataTransfer.files[0]); var f = e.dataTransfer.files[0]; var fileReader = new FileReader(); fileReader.onload = function(e){ // console.log(e.target); // e.target是一个filereader,其中result是图片的base64信息 console.log(e.target.result); //base64编码的图片信息 imgContainer.innerHTML = "<img src='" + fileReader.result + "'>"; } fileReader.readAsDataURL(f); } }
效果:


浙公网安备 33010602011771号