传智博客
快捷导航
蚂蚁部落
蚂蚁部落 网站首页 前端教程 特效教程 查看内容

栏目导航

≡CSS特效≡

≡JavaScript特效≡

≡jQuery特效≡

JavaScript随机漂浮广告详解

2017-10-24 16:27| 发布者: 蚂蚁小编| 查看: 1052| 评论: 0|来自: 蚂蚁部落

传智播客

随机漂浮广告在很多网站都有应用,在网页中随机运动,具有良好的展现效果。

是否有利于提高网站的人性化程度可能就另当别论,很多浏览者对此比较厌烦,有这样的需求,作为程序员的我们就要满足,下面就通过代码实例介绍一下如何实现此效果,代码实例如下:

[HTML] 纯文本查看 复制代码运行代码
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css">
div#roll {
  width:100px;
  height:100px;
  background-color:green;
  color:#fff;
  position:absolute;
  font-size:12px;
  text-align:center;
  line-height:100px;
}
</style>
<script type="text/javascript">
var interval=null;
var ggRoll=null;
window.onload=function(){
  ggRoll={
    roll:document.getElementById("roll"),
    speed:20,
    statusX:1,
    statusY:1,
    x:100,
    y:300,
    winW:document.documentElement.clientWidth-document.getElementById("roll").offsetWidth,
    winH:document.documentElement.clientHeight-document.getElementById("roll").offsetHeight,
    Go:function(){
      this.roll.style.left = this.x + 'px';
      this.roll.style.top = this.y + 'px';
      this.x = this.x + (this.statusX ? -1 : 1)
      if(this.x < 0) { this.statusX = 0 }
      if(this.x > this.winW) { this.statusX = 1 }
      this.y=this.y + (this.statusY ? -1 : 1)
      if(this.y < 0) { this.statusY = 0 }
      if (this.y > this.winH) { this.statusY = 1 }
    }
  }
  interval=setInterval(function(){ggRoll.Go()},ggRoll.speed);
  ggRoll.roll.onmouseover=function(){clearInterval(interval)};
  ggRoll.roll.onmouseout=function(){interval=setInterval(function(){ggRoll.Go()},ggRoll.speed)};
}
</script>
</head>
<body>
<div id="roll">蚂蚁部落欢迎您</div>
</body>
</html>

一个小的div块会在网页中四处飘动,下面就详细介绍一下它的实现过程。

一.代码注释:

(1).var interval=null,声明一个变量并赋值为null,后面会用作定时器函数的返回值。

(2).var ggRoll=null,声明一个变量,用来存储一个对象。

(3).window.onload=function(){},当文档内容完全加载完毕再去执行函数中的代码。

(4).ggRoll={},创建一个对象直接量。

(5).roll:document.getElementById("roll"),获取id属性值为roll的对象。

(6).speed:20,规定飘动速度,其实即使定时器函数每隔多长时间执行一次。

(7).statusX:1,规定每执行一次函数,left属性值变化的幅度。

(9).statusY:1,规定没执行一次函数,top舒心只变化的幅度。

(10).x:100,规定初始状态下left属性的值。

(11).y:300,规定初始状态top的属性的值。

(12).winW:document.documentElement.clientWidth-document.getElementById("roll").offsetWidth,差值用来测算left属性值的极限。

(13).winH:document.documentElement.clientHeight-document.getElementById("roll").offsetHeight,差值用来测算top属性值的极限。

(14).Go:function(){},声明一个函数,它完成了漂浮的核心。

(15).this.roll.style.left = this.x + 'px',设置div的left属性值。

(16).this.roll.style.top = this.y + 'px',设置div的top属性值。

(17).this.x = this.x + (this.statusX ? -1 : 1),如果statusX=1则每次增1px,否则减1px。

(18).if(this.x < 0) { this.statusX = 0 },如果left属性值小于0,那么将statusX 设置为0。

(18).if(this.x > this.winW) { this.statusX = 1 },如果left属性值大于winW,也就是div要超出右边界了,就将statusX值设置为1。

二.相关阅读:

(1).clientWidth属性可以参阅clientWidth一章节。 

(2).offsetWidth属性可以参阅offsetWidth用法一章节。 

(3).setInterval()函数可以参阅setInterval()一章节。 

(4).clearInterval()函数可以参阅clearInterval()方法一章节。 


鲜花

握手

雷人

路过

鸡蛋

最新评论

关于我们|手机版|小黑屋| ( 鲁ICP备10022556号-3 )

GMT+8, 2017-11-19 20:17 , Processed in 0.068790 second(s), 22 queries .

Powered by Discuz! X3.2 Licensed

Copyright © 2012-2017 Design: 蚂蚁部落

返回顶部