一、广告飘窗
1、先在body里添加一个div
<body>
<div id="div1"></div>
</body>
2、开始编写js部分代码
1.设置div的样式。我这就用js设置。
//获取节点
var div = document.getElementById("div1");
//设置div初始位置
var offsetx = 0;
var offsety = 0;
//定义top,left每次变更的距离
var stept = 1;
var stepl = 1;
//div样式
div.style.width = "200px"
div.style.height = "200px"
div.style.background = "red";
div.style.position = "absolute";
div.style.top = offsety;
div.style.left = offsetx;
2. 获取网页可视区域的宽高,可以得出div的top,left可移动范围等于可视区域减去div自身的高度
// 网页可视区域的宽高
var seeHeight = document.documentElement.clientHeight
var seeWidth = document.documentElement.clientWidth;
var maxLeft = seeWidth - 200;
var maxTop = seeHeight - 200;
3.定义控制div移动的函数,为了防止div跑出可视范围之外,一开始判断offsety、offsetx(也就是div的top、left)是否大于最大的可移动范围(会超过可视范围下边或者右边),或者小于0(会超过可视范围上边或者左边)。
如果超过,就把step每次变更的距离设为负数,变为负数之后,offsety、offsetx每次加的是一个负数,这样offsety、offsetx就等于每次递减
如果没超过,则使div的top或者left继续增加
function move() {
if (offsety >= maxTop || offsety < 0) {
stept = -stept
}
if (offsetx >= maxLeft || offsetx < 0) {
stepl = -stepl
}
offsety += stept
offsetx += stepl;
div.style.top = offsety + "px";
div.style.left = offsetx + "px";
}
4.定时器,使函数20毫秒执行一次
var t = setInterval(move, 20)
5.添加div的移入停止,移出继续事件
div.onmouseover = function() {
clearInterval(t)
}
div.onmouseout = function() {
t = setInterval(move, 20)
}
二、为了代码后面使用方便,把广告飘窗做了一个封装
每次使用调用就行
divId:div的id名;
offsety:div初始距离上边的距离;
offsetx:div初始距离左边的距离;
stept:div每次垂直移动的距离;
stepl:div每次水平移动的距离;
speed:div移动速度(定时器触发间隔);
#div1 {
width: 100px;
height: 100px;
background-color: red;
//圆形
border-radius: 50%;
}
move("div1", 100, 100, 20, 20, 50)
function move(divId, offsety, offsetx, stept, stepl, speed) {
var div = document.getElementById(divId);
var offsetx = offsetx;
var offsety = offsety;
var stept = stept;
var stepl = stepl;
var width = div.offsetWidth
var height = div.offsetHeight
div.style.position = "absolute";
div.style.top = offsety;
div.style.left = offsetx;
var maxLeft = seeWidth - width;
var maxTop = seeHeight - height;
var t = setInterval(
function move1() {
if (offsety >= maxTop || offsety < 0) {
stept = -stept
}
if (offsetx >= maxLeft || offsetx < 0) {
stepl = -stepl
}
offsety += stept
offsetx += stepl;
div.style.top = offsety + "px";
div.style.left = offsetx + "px";
}, speed);
}
版权归原作者 m0_58510118 所有, 如有侵权,请联系我们删除。