第157天 举例说明js拖拽用到的事件有哪些?
function onMouseDown(event){
if (event.button == 0) {
console.log("鼠标左键!")
}else if (event.button == 2){
console.log("鼠标右键!");
}else if(event.button == 1){
console.log("鼠标滚轮!");
}
}
ondragstart/ondrop/ondragover
PC端: ondragstart/ondrop/ondragover
手机端: touchstart/touchmove/touchend
mousedonw``mousemove``mouseuptouchstart``touchmove``touchenddragstart``drag``dragenter``dragover``dragleave``drop``dragenddemo
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.tra {
width: 70px;
height: 70px;
position: fixed;
background: red;
}
.drag {
width: 80px;
height: 80px;
background: blueviolet;
}
#dragTarget {
width: 200px;
height: 200px;
border: 1px solid;
}
</style>
</head>
<body>
<!-- HTML Draggable -->
<div class="drag" id="drag" draggable="true"></div>
<div id="dragTarget"></div>
<!-- 传统的拖拽 -->
<div id="tra" class="tra">
</div>
<script>
// 传统的拖拽
; (function () {
var tra = document.querySelector('#tra');
var startPoint = Object.create(null);
var isStartMove = false;
const addUnit = num => num + 'px';
tra.addEventListener('mousedown', e => {
isStartMove = true;
startPoint = {
x: e.offsetX,
y: e.offsetY,
}
});
window.addEventListener('mousemove', e => {
if (!isStartMove) return;
tra.style.left = addUnit(e.clientX - startPoint.x);
tra.style.top = addUnit(e.clientY - startPoint.y);
});
window.addEventListener('mouseup', e => {
isStartMove = false;
startPoint = {
x: 0,
y: 0,
}
});
})();
// HTML5拖拽事件
;(function() {
var dragEl = document.querySelector('#drag');
dragEl.addEventListener('dragstart', e => {
e.dataTransfer.setData("Text",e.target.id);
e.dataTransfer.effectAllowed = 'copyMove';
});
var dragTargetEl = document.querySelector('#dragTarget');
dragTargetEl.addEventListener('dragenter', e => {
e.preventDefault();
});
dragTargetEl.addEventListener('dragover', e => {
e.preventDefault();
});
dragTargetEl.addEventListener('drop', e => {
e.preventDefault();
var id = e.dataTransfer.getData('Text');
e.target.appendChild(document.getElementById(id));
})
})();
</script>
</body>
</html>
Most helpful comment
mousedonw``mousemove``mouseuptouchstart``touchmove``touchenddragstart``drag``dragenter``dragover``dragleave``drop``dragenddemo