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 hasOwnProperty 方法 &amp; in 关键字
Nov 26 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
Dec 19 Javascript
extjs 初始化checkboxgroup值的代码
Sep 21 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
Jan 14 Javascript
基于jQuery实现的图片切换焦点图整理
Dec 07 Javascript
jQuery中focus事件用法实例
Dec 26 Javascript
JS实现Select的option上下移动的方法
Mar 01 Javascript
微信公众号 客服接口的开发实例详解
Sep 28 Javascript
微信小程序 教程之条件渲染
Oct 18 Javascript
javascript 实现动态侧边栏实例详解
Nov 11 Javascript
mpvue小程序仿qq左滑置顶删除组件
Aug 03 Javascript
vue抽出组件并传值实例
Jul 31 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 substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
利用php输出不同的心形图案
2016/04/22 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
2020/05/02 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
2014/07/21 Javascript
jQuery的图片滑块焦点图插件整理推荐
2014/12/07 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
AngularJS中的按需加载ocLazyLoad示例
2017/01/11 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
Python(Tornado)模拟登录小米抢手机
2013/11/12 Python
用Python给文本创立向量空间模型的教程
2015/04/23 Python
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
Python线程创建和终止实例代码
2018/01/20 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
NFL官方在线商店:NFLShop
2020/07/29 全球购物
化工专业应届生求职信
2013/11/08 职场文书
服装电子商务创业计划书
2014/01/30 职场文书
《白鹅》教学反思
2014/04/13 职场文书
护士优质服务演讲稿
2014/08/26 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
村官个人总结范文
2015/03/03 职场文书
教师求职自荐信
2015/03/26 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
详解GaussDB for MySQL性能优化
2021/05/18 MySQL
使用 Apache 反向代理的设置技巧
2022/01/18 Servers