zoukankan      html  css  js  c++  java
  • 拖拽

    HTML

    文字文字文字文字
    <div id="box"></div>
    <img src="img/2.jpg"/>
    

    CSS

    #box,img{
    	 50px;
    	height: 50px;
    	background: red;
    	position: absolute;
    }
    

    JS

    /*
     拖拽的时候,如果有文字被选中,会产生问题
    	原因:当鼠标按下的时候,如果页面中有文字被选中,那么会触发浏览器默认拖拽文字的效果
    	解决:标准下: 阻止默认行为  非标准下:全局捕获
    	拖拽图片会有相同问题,解决方法同上
    	
    全局捕获
    obj.setCapture();
    设置全局捕获,当我们给一个元素设置全局捕获以后,那么这个元素就会监听后续发生的所有事件,当有事件发生的时候,就会被当前设置了全局捕获的元素所触发
     ie:有,并且有效果
     ff:有,但是没有效果
     chrome:没有
     
     释放全局捕获
     obj.releaseCapture();
     * */
    var Box=document.getElementById("box");
    var oImg=document.getElementsByTagName("img")[0];
    
    drag(oImg);
    drag(Box);
    
    function drag(obj){
    	obj.onmousedown=function(ev){
    		var ev=ev||event;
    		
    		
    		var disX=ev.clientX-this.offsetLeft;
    		var disY=ev.clientY-this.offsetTop;
    		
    		//设置全局捕获
    		//所有的onmousemove或者onmouseup都被oImg截获,然后作用在oImg身上
    		if(obj.setCapture){
    			obj.setCapture();
    		}
    		
    		document.onmousemove=function(ev){
    			var ev=ev||event;
    			
    			var L=ev.clientX-disX;
    			var T=ev.clientY-disY;
    			
    			//限制拖拽范围
    			//横向
    			if(L<0){
    				L=0;
    			}else if(L>document.documentElement.clientWidth-obj.offsetWidth){
    				L=document.documentElement.clientWidth-obj.offsetWidth;
    			}
    			//纵向
    			if(T<0){
    				T=0;
    			}else if(T>document.documentElement.clientHeight-obj.offsetHeight){
    				T=document.documentElement.clientHeight-obj.offsetHeight;
    			}
    			
    			obj.style.left=L+'px';
    			obj.style.top=T+'px';
    		}
    		
    		document.onmouseup=function(){
    			document.onmousemove=null;
    			//释放全局捕获
    			if(obj.releaseCapture){
    				obj.releaseCapture();
    			}
    		}
    		
    		//清除默认事件
    		return false;
    	}
    }
    

      

      

      

      

  • 相关阅读:
    hdu-1116(欧拉回路+并查集)
    hdu-1143(简单dp)
    hdu-1141
    JAVA里面获取map的key和value的方法
    MySQL中Date,DateTime,TimeStamp和Time的比较
    idea中修改git提交代码的用户名
    spring配置多个视图解析
    判断Map集合中是否存在某一个key
    win10家庭版升级为win10专业版
    MyBatis模糊查询的三种拼接方式
  • 原文地址:https://www.cnblogs.com/yangxue72/p/8136896.html
Copyright © 2011-2022 走看看