js实现遮罩层划出效果是生成div而不是显示


Posted in Javascript onJuly 29, 2014

同遮盖层划入一样,单纯的遮盖层划出的话算的上是非常简单了,但是在这里它却就不这么简单了,而且我前面还选了个比较麻烦的生成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; 
}

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

Javascript 相关文章推荐
Javascript中string转date示例代码
Nov 01 Javascript
javascript生成不重复的随机数
Jul 17 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
Feb 25 Javascript
JS敏感词过滤代码
Dec 23 Javascript
原生js实现可爱糖果数字时间特效
Dec 30 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
Apr 27 Javascript
微信小程序之前台循环数据绑定
Aug 18 Javascript
Vue.js实现实例搜索应用功能详细代码
Aug 24 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
Oct 25 Javascript
Popup弹出框添加数据实现方法
Oct 27 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
Apr 12 Javascript
Node登录权限验证token验证实现的方法示例
May 25 Javascript
解释&amp;&amp;和||在javascript中的另类用法
Jul 28 #Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
Jul 28 #Javascript
jQuery内置的AJAX功能和JSON的使用实例
Jul 27 #Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
Jul 27 #Javascript
jquery JSON的解析方式示例介绍
Jul 27 #Javascript
jQuery提交多个表单的小技巧
Jul 27 #Javascript
用javascript对一个json数组深度赋值示例
Jul 27 #Javascript
You might like
一些常用的php函数
2006/12/06 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
Laravel多用户认证系统示例详解
2018/03/13 PHP
js replace正则表达式应用案例讲解
2013/01/17 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
jQuery实现的仿select功能代码
2015/08/19 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
Javascript的this用法
2017/01/16 Javascript
windows下vue.js开发环境搭建教程
2017/03/20 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
vue实现重置表单信息为空的方法
2018/09/29 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
JS中作用域以及变量范围分析
2020/07/18 Javascript
深入理解Python中的元类(metaclass)
2015/02/14 Python
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
Python subprocess库的使用详解
2018/10/26 Python
django-allauth入门学习和使用详解
2019/07/03 Python
手写一个python迭代器过程详解
2019/08/27 Python
使用TFRecord存取多个数据案例
2020/02/17 Python
python实现经纬度采样的示例代码
2020/12/10 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫
Hive导入csv文件示例
2022/06/25 数据库
华为HarmonyOS3.0强在哪? 看看鸿蒙3.0这7个小功能
2023/01/09 数码科技