zoukankan      html  css  js  c++  java
  • JS 简单拖拽

    var login                   = document.getElementById('box');
    login.onmousedown 	= function(e,tags) {//tags是个数组对象
    			var e 	= getEvent(e);//获取event对象
    //判断是不是点击头区域
    //if(e.target.className != 'login_title')
    //		return;
    //直接判断classname或者tagname太死板,容易出问题,改为对象
    var flag     = false;//标识符
    for(var i = 0;i<tags.length;i++) {
      if(tags[i] == e.target) {
        flag   = true;
        break;//为true立即停止循环
      }
    }
      if(flag) {
    			var _this 	= this;
    			var diffX 	= e.clientX - _this.offsetLeft;//鼠标点击的坐标点x减去box元素距离左边的距离,得到的差为鼠标垫距离box元素左边的距离
    			var diffY 	= e.clientY - _this.offsetTop;
    			document.onmousemove 	= function(e) {
     //第一种方式,每次判断,然后给box元素的left赋值   
    				if(e.clientX - diffX <= 0) {
    					_this.style.left 	= '0px';
    				}else if(e.clientX - diffX >= document.body.clientWidth - _this.offsetWidth) {
    					_this.style.left 	= (document.body.clientWidth - _this.offsetWidth) + 'px';
    				}else {
    					_this.style.left 	= (e.clientX - diffX) + 'px';
    				}
    //这种方法更简洁,好看
    				var top 				= e.clientY - diffY;
    				if(top <= 0) 
    					top 				= 0;
    				else if(top >= document.body.clientHeight - _this.offsetHeight)
    					top 				= document.body.clientHeight - _this.offsetHeight
    
    				_this.style.top 	= top + 'px';
    				
    			}
    			document.onmouseup 		= function() {
    //鼠标放开后,注销移动跟放开的事件
    				this.onmousemove 		= null;
    				this.onmouseup 		= null;
    			}
          }
    }        
    
    function getEvent(event) {
       return event || window.event;      
    }    
    
  • 相关阅读:
    poj 2754 Similarity of necklaces 2 转换成多重背包,单调队列优化/ 二进制优化
    new和delete2
    new和delete1
    new和delete4
    new和delete3
    new(placement new)
    用例图中的Actor(参与者)一定是人吗?
    二维数组的函数参数传递
    二维指针动态创建二维数组(C/C++)
    OOD的五项基本原则——SOLID
  • 原文地址:https://www.cnblogs.com/lxdd/p/4203745.html
Copyright © 2011-2022 走看看