javascript跟隨捲軸滾動的層(浮動AD效果)_javascript技巧

來源:互聯網
上載者:User
其實這個效果在很多網站中都能見到,其主要表現為網頁兩側的浮動廣告。看起來感覺很難做,但其實原理是很簡單的,使用定時器沒0.1秒檢測層的位置並將其置在指定的位置(相對於視窗)。寫了一個簡單的代碼:
<!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" xml:lang="en" lang="en"> <head> <title></title> </head> <body> <script type="text/javascript"> function scrollImg(){ var posX,posY; if (window.innerHeight) { posX = window.pageXOffset; posY = window.pageYOffset; } else if (document.documentElement && document.documentElement.scrollTop) { posX = document.documentElement.scrollLeft; posY = document.documentElement.scrollTop; } else if (document.body) { posX = document.body.scrollLeft; posY = document.body.scrollTop; } var ad=document.getElementById("ad"); ad.style.top=(posY+100)+"px"; ad.style.left=(posX+50)+"px"; setTimeout("scrollImg()",100); } </script> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <div id="ad" >此廣告位招租</div> <script type="text/javascript"> scrollImg(); </script> </body> </html>
[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]

注意:
if (window.innerHeight) {
       posX = window.pageXOffset;
       posY = window.pageYOffset;
   }
   else if (document.documentElement && document.documentElement.scrollTop) {
       posX = document.documentElement.scrollLeft;
       posY = document.documentElement.scrollTop;
   }
   else if (document.body) {
       posX = document.body.scrollLeft;
       posY = document.body.scrollTop;
   }
這段代碼是為了相容標準,在xhtml頁面中,document.body.scrollTop始終為0,即該屬性無效,因此必須用其他的屬性來判斷,為相容新舊標準,應該對屬性的可用性進行判斷。

引用網上的一段文字: 

引用

應用WEB標準會使ScrollTop屬性失效!!! 
<!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">

加上這段後,document.body.scrollTop永遠等於0


body onscroll = "alert(document.body.scrollTop);"永遠也不會引發。


解決辦法:

使用:

document.documentElement.scrollTop 

樣本一:

var scrollPos; 
if (typeof window.pageYOffset != 'undefined') { 
  scrollPos = window.pageYOffset; 

else if (typeof document.compatMode != 'undefined' && 
    document.compatMode != 'BackCompat') { 
  scrollPos = document.documentElement.scrollTop; 

else if (typeof document.body != 'undefined') { 
  scrollPos = document.body.scrollTop; 

alert(scrollPos);


樣本二:

function WebForm_GetScrollX() 
{
   if (__nonMSDOMBrowser) 
   {
       return window.pageXOffset;
   }
   else 
   {
       if (document.documentElement && document.documentElement.scrollLeft) 
       {
           return document.documentElement.scrollLeft;
       }
       else if (document.body) 
       {
           return document.body.scrollLeft;
       }
   }
   return 0;
}


-------------------------------------
pageYOffset是netscape的
document.body.scrollTop和document.documentElement.scrollTop是ie的,但我不知道他們的真正區別,只知道documentElement.scrollTop是xhtml相容的(我用的是strict)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.