JavaScript隨機漂浮廣告詳解

螞蟻小編發表於2017-10-24

隨機漂浮廣告在很多網站都有應用,在網頁中隨機運動,具有良好的展現效果。

是否有利於提高網站的人性化程度可能就另當別論,很多瀏覽者對此比較厭煩,有這樣的需求,作為程式設計師的我們就要滿足,下面就通過程式碼例項介紹一下如何實現此效果,程式碼例項如下:

[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()方法一章節。 

相關文章