js具有跟隨彈性效果的網頁右下角視窗程式碼
本章節分享一段程式碼例項,它實現了網頁右下角視窗彈性跟隨作用。
下面就給出程式碼,並且進行以下詳細的分析,程式碼如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> html,body{ height:2000px; } #antzone{ width:200px; height:150px; background:#c0c0c0; } </style> <script> function scroll(p){ var d = document, w = window, o = d.getElementById(p.id), ie6 = /msie 6/i.test(navigator.userAgent); if(o){ o.style.cssText +=";position:" +(p.f&&!ie6?'fixed':'absolute') +";"+(p.l?'left':"right")+":0;" +(p.t!=undefined?'top:'+p.t+'px':'bottom:0'); if(!p.f||ie6){ -function(){ var t = 500, st = d.documentElement.scrollTop||d.body.scrollTop, c; c = st - o.offsetTop + (p.t!=undefined?p.t:(w.innerHeight||d.documentElement.clientHeight)-o.offsetHeight); c!=0&&(o.style.top = o.offsetTop + Math.ceil(Math.abs(c)/10)*(c<0?-1:1) + 'px',t=10); setTimeout(arguments.callee,t) }() } } } window.onload=function(){ scroll({ id:'antzone' }) } </script> </head> <body> <div id="antzone"></div> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).function scroll(p){},此函式實現了各種準備工作,引數是一個物件,根據下面的程式碼可以推斷這個物件具有多個屬性:
id:浮動物件的id。
r:右邊距(視窗右邊距,不寫為靠左浮動)。
l:左邊距(距離父級物件的左邊距) “r”和“l”只能有其中一個引數。
t:上邊距(預設貼著底邊,0是貼著頂邊)。
f:1表示固定(不寫或者0表示滾動)。
(2).var d = document,將document物件引用賦值給變數d,是不是可以減少很多程式碼量。
(3).w = window,和上面是同樣的道理。
(4).o = d.getElementById(p.id),獲取指定id值的元素物件。
(5).ie6 = /msie 6/i.test(navigator.userAgent),返回一個布林值,用來說明當前瀏覽器是不是IE6瀏覽器。
(6).if(o){},判斷物件是否存在。
(7).o.style.cssText +=";position:"
+(p.f&&!ie6?'fixed':'absolute')
+";"+(p.l?'left':"right")+":0;"
+(p.t!=undefined?'top:'+p.t+'px':'bottom:0');上面的程式碼是根據條件組合成一個css語句。
;position前面加分好是為了防止css+o.style.cssText這樣形式連線的時候會導致錯誤的情況。
(p.f&&!ie6?'fixed':'absolute')這一句表示,如果要將視窗固定且不是ie6瀏覽器,那麼定位方式是fixed,否則就使用absolute.(p.l?'left':"right")+":0;"判斷視窗是在左邊還是右邊,並設定left或者right值為0
(p.t!=undefined?'top:'+p.t+'px':'bottom:0'),是否規定視窗的top屬性值,並進行相應的設定。
(8).if(!p.f||ie6),判斷是否不是或者或者是IE6.
(9).-function(){}(),這是一個匿名自執行函式,我們最為常見的是(function(){})()這種形式,具體參閱相關閱讀。
(10).var t = 500,生命一個變數並賦值為500,作為定時器函式延遲執行的時間。
(11).st = d.documentElement.scrollTop||d.body.scrollTop,獲取向上滾動的尺寸,這麼寫是為了相容性。
(12).c = st - o.offsetTop+ (p.t!=undefined?p.t : (w.innerHeight||d.documentElement.clientHeight)-o.offsetHeight),此段程式碼獲取的最終結果就是元素底部距離視窗底部的距離。
(13).c!=0&&(o.style.top = o.offsetTop + Math.ceil(Math.abs(c)/10)*(c<0?-1:1) + 'px',t=10),這個語句其實使用&&運算子實現一個條件判斷,如果c!=0,也就是div還沒有滑到視窗底部,那麼執行&&後面的程式碼,不斷的調整top屬性值,最終能夠實現div能夠滑到視窗的底部。並且將t的值設定為10,至於為什麼後面會介紹。
(14).setTimeout(arguments.callee,t),整個程式碼是效率不夠高的,因為定時器函式始終執行,當div元素滑到底部的時候,t的值為500,也就是時間間隔邊長,能夠那麼定時器函式的執行頻率也就降低了,那麼瀏覽器壓力就降低了,當拖動滾動條的時候,那麼就將其調整為10,開始真正的滑動操作。
二.相關閱讀:
(1).test()可以參閱正規表示式test()函式一章節。
(2).cssText可以參閱style.cssText一章節。
(3).d.documentElement.scrollTop||d.body.scrollTop可以參閱document.documentElement.scrollTop瀏覽器相容一章節。
(4).offsetTop可以參閱js offsetTop一章節。
(5).小括號的作用可以參閱js中小括號()的用法詳解一章節。
(6).innerHeight可以參閱innerheight一章節。
(7).clientHeight可以參閱clientHeight一章節。
(8).offsetHeight可以參閱js offsetHeight一章節。
(9).Math.abs()可以參閱javascript Math.abs()一章節。
(10).Math.ceil()可以參閱javascript Math.ceil()一章節。
(11).setTimeout()可以參閱setTimeout()一章節。
相關文章
- javascript網頁右下角彈窗效果JavaScript網頁
- 網頁右下角彈窗詳解網頁
- 具有彈性的點選返回網頁頂部程式碼網頁
- js實現彈出層滑鼠跟隨效果JS
- js漸變彈出視窗和關閉視窗效果JS
- 網頁JS彈出廣告程式碼,頭部,右下角,網頁中漂浮,對聯廣告程式碼等大全網頁JS
- 網頁視差效果精品教程:具有視差效果的標籤頁切換網頁
- 廣告彈窗/小視窗程式碼
- 彈出視窗程式碼
- js頁面彈窗JS
- 網頁右下角彈出廣告資訊框例項程式碼網頁
- js模擬實現alert()函式彈出警告視窗效果程式碼例項JS函式
- 關閉網頁彈出提示視窗網頁
- JS彈出視窗視窗的位置和大小JS
- jQuery跟隨滑鼠移動的彈出層效果jQuery
- js實現的點選彈出確認視窗程式碼JS
- 可以限定拖動範圍的彈出視窗效果程式碼例項
- 讓View具有彈性效果的動畫——SpringAnimationView動畫Spring
- 具有彈性效果的右鍵導航選單
- 一側具有滑鼠跟隨效果的垂直導航選單
- javascript底部具有跟隨效果的橫向導航選單JavaScript
- js為showModalDialog()彈出視窗的頁面傳值JS
- 一行js彈窗程式碼就能設計漂亮的彈窗廣告JS
- jQuery大圖跟隨效果程式碼例項jQuery
- 滑鼠懸浮具有背景動畫跟隨效果的導航選單動畫
- 簡單的網頁彈窗陷阱網頁
- 讓一個元素在網頁上跟隨網頁視窗大小變化始終保持上下左右居中網頁
- jQuery彈出帶有遮罩視窗效果jQuery遮罩
- 仿QQ右下角彈窗新聞_原始碼分享原始碼
- js實現的div元素尺寸彈性縮放效果程式碼例項JS
- 點選彈出帶有遮罩的視窗效果遮罩
- 彈性效果網頁右側浮動框詳解網頁
- javascript元素滑鼠跟隨效果程式碼例項詳解JavaScript
- JavaScript跟隨滑鼠指標的粒子效果程式碼例項JavaScript指標
- 右下角緩慢出現廣告視窗例項程式碼
- 關閉瀏覽器視窗彈出警告視窗程式碼例項瀏覽器
- 滑鼠懸浮彈出滑鼠跟隨層程式碼例項
- js實現彈出灰色背景能夠拖動的視窗例項程式碼JS