HTM5:拖放
2016-06-23 15:26
183 查看
一:单一拖放
<span style="font-size:18px;"><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<style type="text/css">
#div1{width: 900px;height: 200px;padding: 10px;border: 1px solid #aaaaaa;}
</style>
<script type="text/javascript">
function allowDrop(ev)
{
ev.preventDefault();
}
function drag(ev) { ev.dataTransfer.setData("Text",ev.target.id); }
function drop(ev) { ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); }
</script>
<body>
<P>把图片拖放到矩形中</P>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>
<img id="drag1" src="img/test.png" draggable="true" ondragstart="drag(event)"/>
</body>
</html>
</span>
代码分析
1)设置元素可拖放
把元素的draggable属性设置为true,元素才可以被拖放。
2)谁被拖放:ondragstart()和setData()
上面的案例中:drag()函数规定了被拖动的数据,dataTransfer.setData()设置被拖动的数据的数据类型和值。
在上面案例中:数据类型是“Text”,值是可拖动元素id("drag1")
3)拖放到何处:ondragover
ondragover规定了在何处放置被拖动的数据
ev.preventDefault() 阻止对元素的默认处理
4)进行放置:ondrop
放置被拖动的数据时会发生drop事件
二:来回拖放
<span style="font-size:18px;"><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<style type="text/css">
#div1,#div2{
float: left;
width: 100px;
height: 100px;
margin: 10px;
padding: 10px;
border: 1px solid #aaaaaa;
}
</style>
<script type="text/javascript">
function allowDrop(ev){
ev.preventDefault();
}
function drag(ev){
ev.dataTransfer.setData("Text",ev.target.id);
}
function drop(ev){
ev.preventDefault();
var data = ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
</script>
<body>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
<img id="drag1" src="img/test2.png" draggable="true" ondragstart="drag(event)" />
</div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
</body>
</html></span>
<span style="font-size:18px;"><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<style type="text/css">
#div1{width: 900px;height: 200px;padding: 10px;border: 1px solid #aaaaaa;}
</style>
<script type="text/javascript">
function allowDrop(ev)
{
ev.preventDefault();
}
function drag(ev) { ev.dataTransfer.setData("Text",ev.target.id); }
function drop(ev) { ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); }
</script>
<body>
<P>把图片拖放到矩形中</P>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
</div>
<img id="drag1" src="img/test.png" draggable="true" ondragstart="drag(event)"/>
</body>
</html>
</span>
代码分析
1)设置元素可拖放
把元素的draggable属性设置为true,元素才可以被拖放。
<img draggable="true" />
2)谁被拖放:ondragstart()和setData()
上面的案例中:drag()函数规定了被拖动的数据,dataTransfer.setData()设置被拖动的数据的数据类型和值。
function drag(ev) { ev.dataTransfer.setData("Text",ev.target.id); }
在上面案例中:数据类型是“Text”,值是可拖动元素id("drag1")
3)拖放到何处:ondragover
ondragover规定了在何处放置被拖动的数据
ev.preventDefault() 阻止对元素的默认处理
event.preventDefault()
4)进行放置:ondrop
放置被拖动的数据时会发生drop事件
function drop(ev) { ev.preventDefault(); var data=ev.dataTransfer.getData("Text"); ev.target.appendChild(document.getElementById(data)); }
二:来回拖放
<span style="font-size:18px;"><!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<style type="text/css">
#div1,#div2{
float: left;
width: 100px;
height: 100px;
margin: 10px;
padding: 10px;
border: 1px solid #aaaaaa;
}
</style>
<script type="text/javascript">
function allowDrop(ev){
ev.preventDefault();
}
function drag(ev){
ev.dataTransfer.setData("Text",ev.target.id);
}
function drop(ev){
ev.preventDefault();
var data = ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
</script>
<body>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
<img id="drag1" src="img/test2.png" draggable="true" ondragstart="drag(event)" />
</div>
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
</body>
</html></span>
相关文章推荐
- Android 属性动画(一)
- 解决MySQL安装重装时出现could not start the service mysql error:0问题的方法
- MongoDb基本操作
- Redis server&Client executions
- ItemTouchHelper源码解析
- phpStorm支持CodeIgniter代码提示/自动完成
- 那些年我们刷过的算法题(排序)---有一个只由0,1,2三种元素构成的整数数组,请使用交换、原地排序而不是使用计数进行排序
- 设计模式概述
- centos 端口检查
- android --APK下载、安装、启动
- node.js中的path对象
- 将前台的String转给后台,解析为list<Object>
- PID控制理論(1)-基本介紹
- Xcode工具栏不显示
- BZOJ 1063 道路设计NOI2008
- Spring入门示例
- angularjs中使用ng-repeat需要注意的东西
- Robot Framwork环境配置
- Mysql(5.7)win安装
- 153. Find Minimum in Rotated Sorted Array