给大家分享一个拖拽元素时添加预览的小Demo,效果如下:
以下是代码实现,欢迎大家复制粘贴及吐槽。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>原生JS实现拖拽位置预览</title>
<style>
.box {
position: absolute;
border: 1px dashed black;
}
#box {
width: 100px;
height: 100px;
background: yellow;
position: absolute;
}
</style>
</head>
<body>
<div id="box"></div>
<script>
window.onload = function () {
var box = document.getElementById('box');
box.onmousedown = function (ev) {
var myEvent = ev || event;
var disX = myEvent.clientX - box.offsetLeft;
var disY = myEvent.clientY - box.offsetTop;
var div = document.createElement('div');
div.className = 'box';
div.style.width = box.offsetWidth - 2 + 'px';
div.style.height = box.offsetHeight - 2 + 'px';
div.style.left = box.offsetLeft + 'px';
div.style.top = box.offsetTop + 'px';
document.body.appendChild(div);
document.onmousemove = function (ev) {
var myEvent = ev || event;
div.style.left = myEvent.clientX - disX + 'px';
div.style.top = myEvent.clientY - disY + 'px';
};
document.onmouseup = function () {
document.onmousemove = null;
document.onmouseup = null;
box.style.left = div.style.left;
box.style.top = div.style.top;
document.body.removeChild(div);
};
};
};
</script>
</body>
</html>