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获取元素文档大小、偏移和位置和滚动条位置的方法集合
Jan 12 Javascript
jquery easyui滚动条部分设置介绍
Sep 12 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
Oct 29 Javascript
微信小程序 action-sheet底部菜单详解
Oct 27 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
Nov 23 Javascript
微信小程序 PHP后端form表单提交实例详解
Jan 12 Javascript
vue实现留言板todolist功能
Aug 16 Javascript
微信小程序实现日历效果
Dec 28 Javascript
JS实现获取当前所在周的周六、周日示例分析
May 11 Javascript
微信小程序云开发之模拟后台增删改查
May 16 Javascript
vue 实现路由跳转时更改页面title
Nov 05 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
Jul 15 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中require和require_once的区别说明
2014/02/27 PHP
php cli换行示例
2014/04/22 PHP
CodeIgniter框架过滤HTML危险代码
2014/06/12 PHP
PHP使用glob函数遍历目录或文件夹的方法
2014/12/16 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
JavaScript组件焦点与页内锚点间传值的方法
2015/02/02 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
JS和canvas实现俄罗斯方块
2017/03/14 Javascript
js实现导航跟随效果
2018/11/17 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
vue项目中定义全局变量、函数的几种方法
2019/11/08 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
Python对列表排序的方法实例分析
2015/05/16 Python
python文件操作相关知识点总结整理
2016/02/22 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
Python如何调用JS文件中的函数
2019/08/16 Python
python中scipy.stats产生随机数实例讲解
2021/02/19 Python
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
什么是命名空间(NameSpace)
2015/11/24 面试题
师范生实习的个人自我鉴定
2013/10/20 职场文书
新闻专业学生的自我评价
2014/02/13 职场文书
暑期教师培训方案
2014/06/07 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记