JavaScript-永远点不到的小窗口

 1 <!doctype html>
 2 <html>
 3  <head>
 4     <meta charset="UTF-8">
 5     <title>在当前显示区范围内实现点不到的小方块</title>
 6     <style>
 7         div{position:fixed;width:500px;height:500px;
 8             background-color:pink;
 9         }
10     </style>
11
12  </head>
13  <body>
14  <div id="pop"></div>
15     <script>
16         var game={
17             PSIZE:0,//保存div的大小
18             MAXTOP:0,//保存最大可以top
19             MAXLEFT:0,//保存最大可用left
20             pop:null,//保存主角div
21             init:function(){
22                 //查找id为pop的div保存在pop属性中
23                 this.pop=document.getElementById("pop");
24                 //获取pop计算后的样式中的width,转为浮点数保存在PSIZE属性中
25                 this.PSIZE=parseFloat(getComputedStyle(this.pop).width);
26                 //计算MAXTOP:文档显示区的高-PSIZE
27                 this.MAXTOP=innerHeight-this.PSIZE;
28                 //计算MAXLEFT:文档显示区的宽-PSIZE
29                 this.MAXLEFT=innerWidth-this.PSIZE;
30                 //debugger;
31                 debugger;
32                 //在0-MAXTOP之间生成随机数,保存在变量rTop中
33                 var rTop=Math.floor(Math.random()*(this.MAXTOP+1));
34                 //在0-MAXLEFT之间生成随机数,保存在变量rLeft中
35                 var rLeft=Math.floor(Math.random()*(this.MAXLEFT+1));
36                 //设置pop的top为rTop
37                 this.pop.style.top=rTop+"px";
38                 //设置pop的left为rLeft
39                 this.pop.style.left=rLeft+"px";
40
41                 //为pop绑定鼠标进入事件监听,函数为
42                 this.pop.addEventListener("mouseover",
43                     function(e){//获得时间对象e
44                         //反复执行
45                         while(true){
46                         //在0-MAXTOP之间生成随机数,保存在变量rTop中
47                         var rTop=Math.floor(Math.random()*(this.MAXTOP+1));
48                         //在0-MAXLEFT之间生成随机数,保存在变量rLeft中
49                         var rLeft=Math.floor(Math.random()*(this.MAXLEFT+1));
50                         //获得鼠标相对于文档显示区的x坐标
51                         var x= e.clientX;
52                         //获得鼠标相对于文档显示区的y坐标
53                         var y= e.clientY;
54                         //如果!(x>=rLeft&&x<rLeft+PSIZE
55                         // &&y>=rTop&&y<=rTop+PSIZE)
56                         if(!(x>=rLeft&&x<rLeft+this.PSIZE&&y>=rTop&&y<=rTop+this.PSIZE)){
57                         //如果新位置不包含鼠标位置
58                         //设置pop的top为rTop
59                         this.pop.style.top=rTop+"px";
60                         //设置pop的left为rLeft
61                         this.pop.style.left=rLeft+"px";
62                         //退出循序
63                         break;
64                           }
65                         }
66                     }.bind(this)
67                 );
68             }
69
70         }
71         game.init();
72     </script>
73
74  </body>
75 </html>
时间: 2024-10-10 18:35:12

JavaScript-永远点不到的小窗口的相关文章

使用【 ajax 】【 bootstrap 】显示出小窗口 详情内容 一些代码意思可以参考下一个文章

使用[ bootstrap ]显示出小窗口  详情内容 显示页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> &

js制作带有遮罩弹出层实现登录小窗口

要实现的效果如下 点击“登录”按钮后,弹出登录小窗口,并且有遮罩层(这个名词还是百度知道的,以前只知道效果,却不知道名字) 在没有点击“登录”按钮之前登录小窗口不显示,点击“登录”按钮后小窗口显示,并且遮罩层笼罩整个页面,使整个页面的其他元素暂时失去行为. 遮罩层的实现:相对于body绝对定位,宽度和高度都和body相同,并且有一定的透明度,使得下面的元素能够被看到.原先的元素的z-index为0,遮罩层的z-index在弹出登录小窗口和原先元素的之间. 说的不是很清楚,还是看代码吧! <!DO

IPTV小窗口播放视频 页面焦点无法移动的解决方法

在IPTV高清页面中,小窗口播放视频时,在某些机顶盒上(如高清中兴.高清大亚4904)会出现焦点无法移动现象,即按键无响应.被这个bug困扰了很久,虽然我知道解决方法,但只知其然,不知其所以然.今天做了实验,结果分析如下: 当页面调用视频播放方法时,我们知道代码所做的实际工作是将含有视频ID.视频窗口位置.视频窗口大小等参数拼接在url里,赋值给用于播放视频的iframe的src,此时会在当前页面运行播放控件(我猜想可能是这样.当然这个播放控件只在IPTV机顶盒上得到支持是确定的,在PC端会报错

一些JavaScript中的DOM的优化小技巧

在进行DOM优化时需要关注的问题有:修改DOM的时候,会引起页面的重排,重绘.因为JS是单线程执行的,那么在重排重绘的过程中可能会阻塞用户的操作.为了更好的用户体验,必须要严格控制这些操作. 一.对象集合 NodeList 当我们调用:getElementsByTagName,getElementsByName,getElementsByClassName的时候,返回的结果是一个NodeList,这个NodeList是实时的.如果你修改对应的html,那么NodeList中也会得到修改. 而且,

【前端】javascript中10常用的个小技巧总结

javascript中10常用的个小技巧总结 本文转自:http://www.cnblogs.com/libin-1/p/6756393.html 1. new Set() 可能有人知道ES6中提供了新的数据结构 Set,但是能够灵活运用的人或许不多.利用Set数据结构我们能够轻松的去重一个数组,比如: let arr = [1, 2, 2, 3]; let set = new Set(arr); let newArr = Array.from(set); // Array.from方法可以将

Java基础:多功能小窗口,swing,io,net综合应用

概念原理的理解,不代表能熟练应用. 如果将多个知识点关联并应用起来,这能加快我们对知识的掌握. 作为一个初学者,最快速的上手方式应该就是学以致用了. 下面做了一个小窗口,主要是为了综合应用java的一些基础功能,界面稍显随意. 界面: 具体功能以及代码: 1 /*具体实现功能: 2 * 1.根据地址栏的路径打开文本文件,显示在文本区域. 3 * 2.根据地址栏的网址获取网页源代码,显示在文本区域. 4 * 3.通过打开按钮打开本地文本文件,显示在文本区域. 5 * 4.通过保存按钮,把文本区域内

[ucgui] 对话框2——小窗口初始化与消息响应

>_<" 上一节已经说过,创建过得窗口虽然可见,但是它们是以 “空”的形式出现的.这是因为对话框过程函数尚未包含初始化单个元素的代码.小工具的初始值.由它们所引起的行为以及它们之间的交互作用都需要在对话框过程中进行定义.这里在过程函数的WM_INIT_DIALOG消息下实现对小窗口初始化,然后在WM_NOTIFY_PARENT消息下实现对小工具的响应~ 1 /***************************************************************

Android Studio 恢复小窗口停靠模式(Docked Mode)

安卓studio在使用小窗口时,如果我们点击取消了窗口的docked mode模式,窗口就会变成,你一旦触发窗口以外的区域,窗口就会龟缩回去.此时,如果你想要恢复回原来的docked mode的话,具体步骤是: 1.选中要恢复的窗口,如图打开window -> active tool window 2.然后选中docked mode 选项.

Ogre-三维窗口上添加导航小窗口

参考: http://www.cppblog.com/hitmaen/archive/2007/05/22/24589.html 参考: http://www.360doc.com/content/13/0906/11/593831_312575920.shtml 参考: http://blog.csdn.net/windows_nt/article/details/7495387 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源) 要

【COCOS2DX-游戏开发之三三】TMX边界控制与小窗口内预览TMX

1.Spring Security 目前支持认证一体化如下认证技术: HTTP BASIC authentication headers (一个基于IEFT  RFC 的标准) HTTP Digest authentication headers (一个基于IEFT  RFC 的标准) HTTP X.509 client certificate exchange  (一个基于IEFT RFC 的标准) LDAP (一个非常常见的跨平台认证需要做法,特别是在大环境) Form-based auth