H5中, 有个属性,draggable="true", 这个属性呢(默认false),需要加在标签上,加上去该标签就可以拖动了
拖拽div的时候, 能监听到三个事件
<style>
.app {
border: 1px solid #eedded;
top: 300px;
width: 800px;
height: 800px;
position: relative;
}
p {
columns: 300px 3;
}
.t {
width: 200px;
height: 200px;
background-color: pink;
/* 为了拖拽 定位 */
position: absolute;
left: 0px;
top: 0px;
z-index: 1;
}
</style>
<body>
<div class="t" id='tt' draggable="true"></div>
<div class="app">
</div>
</body>
<script>
var tt = document.getElementById('tt')
var X = 0,
Y = 0;
//开始拖拽事件
tt.ondragstart = function (e) {
X = e.clientX; //记录鼠标点下的位置。(因为div的定位点,是左上角 0,0)
Y = e.clientY;
}
//结束拖拽事件
/*
配合绝对定位
*/
tt.ondragend = function (e) {
var X1 = e.clientX - X; //结束的位置,减去鼠标点下的位置,那么得到的位置,就是div落下的位置。
var Y1 = e.clientY - Y;
tt.style.left = tt.offsetLeft + X1 + 'px'; //这里还需要加上 div当前的位置, 累加。
tt.style.top = tt.offsetTop + Y1 + 'px';
}
tt.ondrag = function (e) { //拖拽过程中的事件
console.log('drag');
}
</script>
配合指定容器(常用)
- 在指定容器内,才会触发的
- ondragenter, ondragover, ondragleave, ondrop, 这四个事件呢,是绑定到,你要把拖拽的东西,放到那里去。