码迷,mamicode.com
首页 > 其他好文 > 详细

利用cookie记录div之前位置

时间:2017-05-09 21:43:10      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:fse   highlight   tle   blog   一点   client   position   .com   事件   

  cookie除了能用来存储用户名,密码等数据外还可以用来记录div之前的位置。

  先上个布局

<div id="div1" style></div>
#div1{
	width: 100px;
	height: 100px;
	background: red;
	position: absolute;
}

   这里先说下拖拽的大体原理,将物体拖到新的位置可以通过改变left和top实现。

  技术分享

  在将div从位置1移动到div2的过程中,不变的是鼠标在div中的位置。因此我们让鼠标在div中的水平位置为disX,竖直为disY。

  

        var oDiv = document.getElementById(‘div1‘);
	var disX = 0;
	var disY = 0;

	oDiv.onmousedown = function(ev){
		var oEvent = ev||event;

		disX = oEvent.clientX-oDiv.offsetLeft;
		disY = oEvent.clientY-oDiv.offsetTop;

		document.onmousemove = function(ev){
			var oEvent = ev||event;

			oDiv.style.left = oEvent.clientX-disX+‘px‘;
			oDiv.style.top = oEvent.clientY-disY+‘px‘;
		}

		document.onmouseup = function(){
			document.onmousemove = null;
			document.onmouseup = null;
		}

		return false;
	}    

  使用上面的代码我们就能对元素进行舒服的拖拽,但如何记录位置呢,这里就要借用cookie。为了避免位置的不准确与频繁改变我们把mouseup事件的位置记录在cookie中

setCookie(‘x‘,oDiv.offsetLeft,5);
setCookie(‘y‘,oDiv.offsetTop,5);

   为了保证下一次读取页面时位置能正确我们把获取cookie放在所有事件之前。

oDiv.style.left = getCookie(‘x‘)+‘px‘;
oDiv.style.top = getCookie(‘y‘)+‘px‘;

   但一开始是没有cookie的,为了严谨一点我们费点力将上面的代码改为

var x=getCookie(‘x‘);
var y=getCookie(‘y‘);
	
if(x)
{
    oDiv.style.left=x+‘px‘;
    oDiv.style.top=y+‘px‘;
}

   下面是js部分的完整代码

var oDiv=document.getElementById(‘div1‘);
	var disX=0;
	var disY=0;
	
	var x=getCookie(‘x‘);
	var y=getCookie(‘y‘);
	
	if(x)
	{
		oDiv.style.left=x+‘px‘;
		oDiv.style.top=y+‘px‘;
	}
	
	oDiv.onmousedown=function (ev)
	{
		var oEvent=ev||event;
		
		disX=oEvent.clientX-oDiv.offsetLeft;
		disY=oEvent.clientY-oDiv.offsetTop;
		
		document.onmousemove=function (ev)
		{
			var oEvent=ev||event;
			
			oDiv.style.left=oEvent.clientX-disX+‘px‘;
			oDiv.style.top=oEvent.clientY-disY+‘px‘;
		};
		
		document.onmouseup=function ()
		{
			document.onmousemove=null;
			document.onmouseup=null;
			
			setCookie(‘x‘, oDiv.offsetLeft, 5);
			setCookie(‘y‘, oDiv.offsetTop, 5);
		};
		
		return false;
	};

 

利用cookie记录div之前位置

标签:fse   highlight   tle   blog   一点   client   position   .com   事件   

原文地址:http://www.cnblogs.com/yuehenying/p/6832622.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!