适合pc端的移动拖拽,分享一下。

h5新加的特性拖拽事件,但是只适合PC端哦。不多说了上代码

 

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style type="text/css">
		body{
			position: relative;
			margin: 0;
		}
		body:before{
			content: ' ';
			display: table;
		}

		#p3{
			position: absolute;
		}
        #div1{
            width: 100px;
            height: 100px;
            position: absolute;
            top:500px;
            left:500px;
            background: #000;
        }
	</style>
</head>
<body>
	<h1>拖动的源对象可能触发的事件</h1>
<!-- 	<p class="p1"></p> -->
	<img id="p3" src="qd.png"/>
    <div id="div1"></div>
<script>  
	//事件源p3开始拖动
	var offsetX,offsetY;
    p3.ondragstart=function(e){  
        console.log('事件源p3开始拖动');  
        //记录刚一拖动时,鼠标在飞机上的偏移量  
        offsetX= e.offsetX;  
        offsetY= e.offsetY;  
    }  
    //事件源p3拖动中
    p3.ondrag=function(e){  
        console.log('事件源p3拖动中');  
        var x= e.pageX;  
        var y= e.pageY;  
        console.log(x+'-'+y);  
        //drag事件最后一刻,无法读取鼠标的坐标,pageX和pageY都变为0  
        if(x==0 && y==0){  
            return; //不处理拖动最后一刻X和Y都为0的情形  
        }  
        x-=offsetX;  
        y-=offsetY;  
  
        p3.style.left=x+'px';  
        p3.style.top=y+'px';  
    } 
    // 源对象p3拖动结束
    p3.ondragend=function(){  
        console.log('源对象p3拖动结束');  
    } 
    //源对象被拖动着进入目标对象
    div1.ondragenter = function(){
        console.log('drag enter111111111111111111');
    } 
    //源对象被拖动着悬停目标对象上方
    div1.ondragover = function(e){
        //dragover 事件默认行为:必须触发drag leave
        e.preventDefault();// 阻止事件的默认行为,使得drop事件可能触发
        //有个默认行为是必须触发dragleave
        console.log('drag over');
    } 
     //源对象被拖动着离开了目标对象
    div1.ondragleave = function(){
        console.log('drag leave');
    } 
     //源对象被拖动着目标对象上方被释放被松手
    div1.ondrop = function(){
        console.log('drag drop');
    } 
</script> 
</body>

</html>

  

posted @ 2018-09-07 14:02  文博的博客  阅读(364)  评论(0编辑  收藏  举报