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 相关文章推荐
js的写法基础分析
Jan 17 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
Aug 03 Javascript
jQuery处理图片加载失败的常用方法
Jun 08 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
Aug 19 Javascript
浅析Javascript中bind()方法的使用与实现
Apr 29 Javascript
Angular2中select用法之设置默认值与事件详解
May 07 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
Jul 24 Javascript
详解angular部署到iis出现404解决方案
Aug 14 Javascript
vue中引入mxGraph的步骤详解
May 17 Javascript
vue和iview实现Scroll 数据无限滚动功能
Oct 31 Javascript
vscode调试node.js的实现方法
Mar 22 Javascript
js实现盒子滚动动画效果
Aug 09 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
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
php生成zip压缩文件的方法详解
2013/06/09 PHP
使用PHP开发留言板功能
2019/11/19 PHP
php中数组最简单的使用方法
2020/12/27 PHP
JavaScript类库D
2010/10/24 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
举例说明JavaScript中的实例对象与原型对象
2016/03/11 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
Django入门使用示例
2017/12/12 Python
Python编程argparse入门浅析
2018/02/07 Python
ubuntu安装mysql pycharm sublime
2018/02/20 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
使用python实现对元素的长截图功能
2019/11/14 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
本科生详细的自我评价
2013/09/19 职场文书
艺术系应届生的自我评价
2013/10/19 职场文书
司机岗位职责范本
2015/04/10 职场文书
小学教师暑期培训心得体会
2016/01/09 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis