js实现遮盖层划出效果-------Day77

同遮盖层划入一样,单纯的遮盖层划出的话算的上是非常简单了,但是在这里它却就不这么简单了,而且我前面还选了个比较麻烦的生成div,而不是显示存在的div,这里有那么几点需要特别注意:

1、遮盖层出现后,鼠标哪怕不动,也已经是在遮盖层上,已经不再给出的div区域了,所以注意监听的位置;

2、onmouseout和onmouseover都是瞬时触发的,这点很重要;

3、在实际应用中,已存在的div的显示比临时创建肯定要有效的多;


这样我还是上一下代码吧,其实之前的地方没怎么变,我只记录改变的地方,那就是onmouseout监听加在了哪呢?

var getOneDiv=function(){
			
			var div=document.createElement("div");
			div.style.position="absolute";
			div.style.display="block";
			div.style.zIndex="10";
			div.style.background="yellow";
			div.addEventListener("mouseout",function(event){//我把它加在了这里,而这里监听的判断与之前的划入几乎如出一辙
				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=[];
				arr.push(top);
				arr.push(right);
				arr.push(bottom);
				arr.push(left);
				var least=findLeast(arr);
				

				if(least==1){
				}
				if(least==2){//还是距离和宽度的同时改变啊
					div.style.left=test.offsetLeft+"px";
					div.style.top=test.offsetTop+"px";
					div.style.height=test.offsetHeight+"px";
					div.style.width=width+"px";
					var changeWidth2=setInterval(function(){
							if(div.offsetLeft>=test.offsetLeft+test.offsetWidth){
								clearInterval(changeWidth2);
								check=true;//关键点
							}else{
								marginLeft=marginLeft+10;
								width=width-10;
								div.style.width=width+"px";
								div.style.left=marginLeft+"px";
							}
						},30);
				}
				if(least==3){

				}
				if(least==4){//向左划出,width作为全局变量,这次就是不断减小了
					div.style.left=test.offsetLeft+"px";
					div.style.top=test.offsetTop+"px";
					div.style.height=test.offsetHeight+"px";
					div.style.width=width+"px";
					var changeWidth1=setInterval(function(){
							if(div.offsetWidth<=0){
								clearInterval(changeWidth1);
								check=true;//这里也比较关键哦
							}else{
								width=width-10;
								div.style.width=width+"px";	
							}
						},30);	
				}
		})
			return div;
		}

就这样简单的都实现了划出划入的效果,简单的看的话确实已经有其形了,但是不得不说,这是个拙劣到了极点的实现,还有多少点是还没有加入的,还有多少情况是还没有考虑到的,另外,这代码的重复编写,优化优化,喏喏...


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值