简单实现遮盖层随鼠标左右划入的效果-------Day75

昨日实现了判断鼠标从div的哪一侧划入,划入部分就简单多了,我们用javascript来实现划入效果。

先来回顾下昨日的鼠标判定:

html部分:

 <body>
	<div style="margin-left:300px;margin-top:300px;width:400px;height:400px;background:cyan;" id="test">
		<img src="11.jpg" width="300px" height="300px">
	</div>
 </body>

js部分:

window.onload=function(){
		var left=0;//鼠标划入部分距离div左边的值
		var top=0;//鼠标划入部分距离div上边的值
		var right=0;//鼠标划入部分距离div右边的值
		var bottom=0;//鼠标划入部分距离div下边的值
		var width=10;//可能用到的遮盖层的初始宽度
		var height=10;//可能用到的遮盖层的初始高度
		var marginLeft;//遮盖层的初始位置
		var marginRight;//遮盖层的初始位置
		var marginTop;//遮盖层的初始位置
		var marginBottom;//遮盖层的初始位置

		var arr=new Array();
		var check=true;//鼠标是否初次划入div

		test.addEventListener("mouseover",function(event){
			var test=document.getElementById("test");
			if(check){
				check=false;
				var x=event.clientX;
				var y=event.clientY;
				left=x-test.offsetLeft;
				top=y-test.offsetTop;
				right=test.offsetLeft+test.offsetWidth-x;
				bottom=test.offsetTop+test.offsetHeight-y;
				arr.push(top);
				arr.push(right);
				arr.push(bottom);
				arr.push(left);
				var least=findLeast(arr);//在这里判定的是哪个最小
		})
		var findLeast=function([a1,a2,a3,a4]){
			var a;
			var n;
			a=a1>a2?a2:a1;
			n=a==a2?2:1;
			a=a3>a?a:a3;
			n=a==a3?3:n;
			a=a4>a?a:a4;
			n=a==a4?4:n;
			return n;
		}

然后我们分别实现从左边和右边划入(这里以生成新的div做遮盖层为例):

左边相比较比较简单,设定初始位置跟div相同,然后宽度不断增加就可以,我们来看下代码:

if(least==4){
					newDiv.style.left=test.offsetLeft+"px";
					newDiv.style.top=test.offsetTop+"px";//设置初始位置
					newDiv.style.height=test.offsetHeight+"px";
					newDiv.style.width=width+"px";//设置遮盖层的初始状态
					document.body.appendChild(newDiv);
					var changeWidth=setInterval(function(){
							if(newDiv.offsetWidth>=test.offsetWidth){
								alert(10);
								clearInterval(changeWidth);

							}else{
								width=width+10;//这里是改变的关键
								newDiv.style.width=width+"px";
							}

						},100);
				}

而右边则就相比较来说略微麻烦点,我们只能让它的初始位置不断变小,但是它的宽度却是不断变大的,而变大这就跟左边一样了,来看下代码:

if(least==2){
					newDiv.style.left=test.offsetLeft+test.offsetWidth+"px";
					newDiv.style.top=test.offsetTop+"px";//设置初始位置
					newDiv.style.height=test.offsetHeight+"px";
					newDiv.style.width=width+"px";//设置遮盖层初始状态
					document.body.appendChild(newDiv);
					marginLeft=test.offsetLeft+test.offsetWidth;
					var changeWidth=setInterval(function(){
							if(newDiv.offsetLeft<=test.offsetLeft){
								alert(10);
								clearInterval(changeWidth);
							}else{
								marginLeft=marginLeft-10;//初始位置不断减小的时候,宽度确实在不断增大的
								width=width+10;
								newDiv.style.width=width+"px";
								newDiv.style.left=marginLeft+"px";
							}
						},100);
				}
			}

这样是不是还欠缺点什么呢,对了,就是里面的这个newDiv哪来的呢?

var getOneDiv=function(){

			var div=document.createElement("div");
			div.style.position="absolute";
			div.style.display="block";
			div.style.zIndex="10";
			div.style.background="yellow";

			return div;
		}

用来生成一个新的div,而我们在var least=findLeast(arr);判定结束之后,就可以来生成了var newDiv=getOneDiv();

这样左右的划入都实现了吧,上下也是差不多原理啦,我就不传代码了,那接下来的就该是移出的效果了,不过今天天又晚了,也有些困了,从周六周日开始全都上班以来,这样连轴转有点吃不消啊,而且暂时也还没有思路,睡觉睡觉

时间: 2024-10-07 10:07:54

简单实现遮盖层随鼠标左右划入的效果-------Day75的相关文章

jquery 简单弹出层

预定义html代码:没有 所有代码通过js生成和移除. 预定义css /* 基本弹出层样式 */ .my-popup-overlay { width:100%; height:auto; /* width height is defined by javascript */ position: absolute; top:0; left: 0; z-index: 1000; background-color: #000; opacity: 0.2; *filter:alpha(opacity=2

jquery 简单弹出层(转)

预定义html代码:没有 所有代码通过js生成和移除. 预定义css /* 基本弹出层样式 */ .my-popup-overlay { width:100%; height:auto; /* width height is defined by javascript */ position: absolute; top:0; left: 0; z-index: 1000; background-color: #000; opacity: 0.2; *filter:alpha(opacity=2

“穿透”层的鼠标事件

“穿透”层的鼠标事件 标题可能不是一读让人容易明白,上张图(转载的) 需要实现如下的效果,有一个浮动层,需要层级在它之下的一个元素也能照常响应相应的事件 一个100*100的元素,边框为1px solid #406c99,它有两个事件(鼠标移入.鼠标移出): onmouseover="this.style.borderColor='#f00';" onmouseout="this.style.borderColor='#406c99';" 在不做特殊处理的情况下,它

遮盖层实现(jQuery+css+html)

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>遮盖层</title> <style> /* 登录层 */ #choose{ display:none; width:360px; height:230px; background:#69F; position:absolute; top:30%; left:40%; z-inde

定义一个按钮按下显示遮盖层的效果

1.点击按钮,出现遮盖层,松开按钮,遮盖层消失 2. 长按按钮,出现遮盖层,松开按钮,遮盖层消失 3. 点击按钮,出现遮盖层,拖拽按钮,遮盖层消失 UIButton *btnBottom = [[UIButton alloc]initWithFrame:CGRectMake(1,1,100,100)]; [btnBottom addTarget:self action:@selector(buttonClickTouchDown:) forControlEvents:UIControlEvent

CSS3实现的鼠标悬浮开门关门效果代码实例

CSS3实现的鼠标悬浮开门关门效果代码实例:本章节分享一段代码实例,它利用CSS3模拟实现了简单的开门关门效果.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>蚂蚁部落<

一款很实用的jQuery鼠标悬浮有动画效果的响应式瀑布流插件

在线预览 下载地址 实例代码 <!doctype html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content=&

鼠标响应文字跳动效果

前端开发whqet,csdn,王海庆,whqet,前端开发专家 昨天看到html5tricks上的一篇文章<jQuery鼠标滑过文字跳动动画插件>,止不住手痒用sass.css3实现一下,并进行了扩展,希望能对大家有所帮助. ---------- ------------------------------- 在线研究点击这里,下载收藏点击这里. ------------------------ ------ 首先来个广告,嘎嘎,前面两篇博文<纯CSS3文字效果推荐>.<CS

jQuery实现鼠标经过图片变亮效果

在线体验效果:http://hovertree.com/texiao/jquery/1.htm 以下是完整源代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml