我们首先回顾一下DOM与BOM
DOM与BOM的区别
DOM | BOM |
---|---|
文档对象模型 | 浏览器对象模型 |
顶级对象是document | 顶级对象是window |
操作页面元素 | 学习浏览器窗口交互的一些对象 |
标准化组织是w3c | BOM是浏览器厂商在各自浏览器上定义的,缺乏标准 |
这个小案例我把它起名为“如果你追上我···”利用的是获取文档显示区的宽高让图片随机生成在页面上,当鼠标移入时图片就会跑掉,下面是演示图
下面就是代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>如果你追到我···</title>
<style>
.box{
width: 400px;
height: 400px;
/*border: 1px solid black;*/
position: fixed;
line-height: 400px;
}
.tom{
width: 342px;
height: 342px;
margin-top: 29px;
margin-left: 29px;
}
img{
display: block;
text-align: center;
}
</style>
</head>
<body>
<div class="box" id="box">
<div class="tom" id="tom">
<img src="img/timg.jpg" alt="">
</div>
</div>
<script>
var box = document.getElementById('box');
var pagewidth = window.innerWidth;
var pageheight = window.innerHeight;
var x = Math.random()*(pagewidth-342);
var y = Math.random()*(pageheight-342);
box.style.top = y + 'px';
box.style.left = x + 'px';
box.onmouseover = function(){
var x = Math.random()*(pagewidth-342);
var y = Math.random()*(pageheight-342);
box.style.top = y + 'px';
box.style.left = x + 'px';
}
</script>
</body>
</html>
这个案例的原理就是随机生成图片的坐标,为了能让图片一直生成在当前视口里我们随机的坐标要在视口宽高的基础上减去图片的宽高,并将图片的定位在随机的宽高上,接着就是绑定一个鼠标移入的事件,当鼠标移入时图片的位置就随机出去。
不过代码里面有一个小心机,既然是不能让人追到,但是绑定的事件又是鼠标移入事件,所以原理上来讲当事件触发的话其实是追到了的,所以我们可以在图片的基础上把外面的盒子宽高设大一点,把事件绑定在外面的盒子上并且不设边框,这样的话每当鼠标靠近图片时都会随机生成位置也就不会“追”到图片啦