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 相关文章推荐
JQuery自定义事件的应用 JQuery最佳实践
Aug 01 Javascript
jquery制作弹窗提示窗口代码分享
Mar 02 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
May 07 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
Mar 31 Javascript
JavaScript中getUTCSeconds()方法的使用详解
Jun 11 Javascript
浅谈jQuery中height与width
Jul 06 Javascript
简单谈谈javascript中的变量、作用域和内存问题
Aug 30 Javascript
Jquery中巧用Ajax的beforeSend方法
Jan 20 Javascript
JavaScript函数柯里化详解
Apr 29 Javascript
headjs实现网站并行加载但顺序执行JS
Nov 29 Javascript
vue框架搭建之axios使用教程
Jul 11 Javascript
js正则表达式校验指定字符串的方法
Jul 23 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/10/09 PHP
rephactor 优秀的PHP的重构工具
2011/06/09 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
js+html制作简单验证码
2017/02/16 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
深入koa-bodyparser原理解析
2019/01/16 Javascript
解决vuex刷新状态初始化的方法实现
2019/08/15 Javascript
Python使用sorted排序的方法小结
2017/07/28 Python
python实现感知器
2017/12/19 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
python修改文件内容的3种方法详解
2019/11/15 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
Python 代码调试技巧示例代码
2020/08/11 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
销售人员自我评价怎么写
2013/09/19 职场文书
女子职高个人自荐书
2014/02/01 职场文书
医院检讨书范文
2014/02/01 职场文书
环保志愿者活动方案
2014/08/14 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL