拖放是 HTML5 中非常常见的功能。

注意: 默认情况下,元素是不可拖动的,为了让元素可拖动,需要将 HTML5 的draggable 属性设置为true。
提示: 链接和图片默认是可拖动的,不需要 draggable 属性。
实现来回拖放的思路:
建立两个框(左框和右框),左框作为图像拖动回来时的容器不设置背景色,右框作为图像拖动出去的容器。
实例代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>js实现来回拖放效果</title>
<style type="text/css">
body {
margin: 60px;
background: #fff;
position: relative;
}
#logo {
width: 300px;
height: 200px;
background: url(http://www.jq22.com/img/cs/500x500-1.png) center 50% no-repeat;
position: absolute;
left: 0;
}/*需要拖动的图标*/
#box0 {
width: 300px;
height: 200px;
position: absolute;border: 5px dashed #27AE60;
left: :0;
z-index: -1;/*设置为最底层*/
}/*左侧框作为拖动回来的容器*/
#box {
width: 300px;
height: 200px;
background: #d4efdf;
border-radius: 10px;/*设置边框弧度*/
border: 5px dashed #27AE60;
position: absolute;
right: 0;
}/*右侧框作为拖动出去的容器*/
</style>
<script>
</script>
</head>
<body>
<div id="logo"></div>
<div id="box0"></div>
<!--左侧框作为拖动回来的容器-->
<div id="box"></div>
<!--右侧框作为拖动出去的容器-->
</body>
<script type="text/javascript">
var logo = document.getElementById("logo");
var box = document.getElementById("box");
logo.draggable = true; /*使logo图标可拖动,因为元素默认是不可拖动的。*/
box.ondragover = function(ev) {
ev.preventDefault();
} /*去除事件的默认行为,因为当logo拖动到右框中时,会不断触发box的ondragover事件,而该事件默认是无法将数据或元素放置到其他元素中的,所以需要取消该事件的默认行为。以下的box0的ondragover事件同理。*/
box.ondrop = function(ev) {
box.appendChild(logo);
} /*将图标移动到右侧框中*/
box0.ondragover = function(ev) {
ev.preventDefault();
}
box0.ondrop = function(ev) {
box0.appendChild(logo);
}
</script>
</html>