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 相关文章推荐
静态页面的值传递(三部曲)
Sep 25 Javascript
jquery 防止表单重复提交代码
Jan 21 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
Aug 30 Javascript
javascript表单验证 - Parsley.js使用和配置
Jan 25 Javascript
js控制table合并具体实现
Feb 20 Javascript
讲解JavaScript中for...in语句的使用方法
Jun 03 Javascript
json与jsonp知识小结(推荐)
Aug 16 Javascript
BootStrap表单宽度设置方法
Mar 10 Javascript
Vue实现数字输入框中分割手机号码的示例
Oct 10 Javascript
Vue-Router实现组件间跳转的三种方法
Nov 07 Javascript
微信小程序rich-text富文本用法实例分析
May 20 Javascript
vue backtop组件的实现完整代码
Apr 07 Vue.js
解释&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获取金书网的书名的实现代码
2010/06/11 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
jquery 学习之二 属性(类)
2010/11/25 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
javascript history对象详解
2017/02/09 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
p5.js临摹动态图形实现方法详解
2019/10/23 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
使用IPython来操作Docker容器的入门指引
2015/04/08 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
详解小白之KMP算法及python实现
2019/04/04 Python
python实现广度优先搜索过程解析
2019/10/19 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
俄罗斯厨房产品购物网站:COOK HOUSE
2021/03/15 全球购物
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
幼儿园教师奖惩制度
2014/02/01 职场文书
春节联欢晚会主持词范文
2014/03/24 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
技术员个人工作总结
2015/03/03 职场文书
《灰雀》教学反思
2016/02/19 职场文书
《将心比心》教学反思
2016/02/23 职场文书
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL