彈性效果網頁右側浮動框詳解
分享一段程式碼例項,它實現了網頁右側懸浮的框效果。
並且這個框具有彈性效果,並且固定在網頁的右側。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> body { height: 2000px; } #antzone { width: 200px; height: 200px; background: aquamarine; position: absolute; right: 0px; bottom: 0px; } </style> <script type="text/javascript"> window.onload = function() { // 滾動事件 window.onscroll = function() { //獲取div var odiv = document.getElementById("antzone"); //相容scrolltop var scrolltop = document.documentElement.scrollTop || document.body.scrollTop; //呼叫函式 starmove((document.documentElement.clientHeight - odiv.offsetHeight) + scrolltop) } //定義一個計時器 var timer = null; function starmove(itarget) { var odiv = document.getElementById('antzone'); //開啟計時器前先關閉計時器 clearInterval(timer); //開啟計時器 timer = setInterval(function() { //定義speed(速度&步長) var speed = (itarget - odiv.offsetTop) / 6; //三目取整 speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed); //判斷到沒到目標位置,到了就關閉計時器,沒到就繼續運動 if (itarget == odiv.offsetTop) { clearInterval(timer); } else { odiv.style.top = odiv.offsetTop + speed + 'px'; } }, 30); } }; </script> </head> <body> <div id="antzone"></div> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
[CSS] 純文字檢視 複製程式碼body { height: 2000px; }
設定body的高度是2000px。
[CSS] 純文字檢視 複製程式碼#antzone { width: 200px; height: 200px; background: aquamarine; position: absolute; right: 0px; bottom: 0px; }
設定元素的高度和寬度背景色,絕對定位,元素位於網頁右下角。
[JavaScript] 純文字檢視 複製程式碼window.onload = function() { //code }
當文件內容完全載入完畢再去執行函式中的程式碼。
[JavaScript] 純文字檢視 複製程式碼window.onscroll = function() { //code }
註冊scroll事件處理函式,也就是拖動滾動條就會觸發此事件。
[JavaScript] 純文字檢視 複製程式碼var odiv = document.getElementById("antzone");
獲取id屬性值為antzone的元素物件。
[JavaScript] 純文字檢視 複製程式碼var scrolltop = document.documentElement.scrollTop || document.body.scrollTop;
採用了相容方式,獲取頁面向上滾動的尺寸。
[JavaScript] 純文字檢視 複製程式碼starmove((document.documentElement.clientHeight - odiv.offsetHeight) + scrolltop)
呼叫starmove()函式,此函式的使用在下面會有介紹;引數值是是元素的top屬性值,能夠將其固定於網頁的底部。
[JavaScript] 純文字檢視 複製程式碼var timer = null;
宣告一個變數並賦值為null,用來儲存定時器函式的標識。
[JavaScript] 純文字檢視 複製程式碼function starmove(itarget) { //code }
此函式實現了緩衝運動效果,引數一個目標位置。
[JavaScript] 純文字檢視 複製程式碼var odiv = document.getElementById('antzone');
獲取指定的元素物件。
[JavaScript] 純文字檢視 複製程式碼clearInterval(timer);
停止上一次定時器函式,防止重複拖動滾動條導致定時器疊加的問題。
[JavaScript] 純文字檢視 複製程式碼timer = setInterval(function() { //code },30)
每隔30毫秒執行一次定時器函式。
[JavaScript] 純文字檢視 複製程式碼var speed = (itarget - odiv.offsetTop) / 6;
計算出一個速度,隨著兩者之差越來越小,那麼這個速度就越來越小。
[JavaScript] 純文字檢視 複製程式碼speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
將速度去整數,個人感覺速度直接等於Math.ceil(speed)即可,還有必要來個三目運算子嗎。
[JavaScript] 純文字檢視 複製程式碼if (itarget == odiv.offsetTop) { clearInterval(timer); } else { odiv.style.top = odiv.offsetTop + speed + 'px'; }
如果到達目的地,也就是網頁底部,那麼就停止定時器函式。
否則就繼續設定元素的top屬性值。
二.相關閱讀:
(1).onscroll事件可以參閱JavaScript scroll事件一章節。
(2).scrollTop可以參閱JavaScript scrollTop一章節。
(3).clientHeight可以參閱clientHeight一章節。
(4).offsetHeight可以參閱JavaScript offsetHeight一章節。
(5).setInterval()可以參閱window.setInterval()一章節。
(6).Math.ceil()可以參閱javascript Math.ceil()一章節。
(7).Math.floor()可以參閱javascript Math.floor()一章節。
相關文章
- JavaScript彈性固定於網頁右側詳解JavaScript網頁
- jQuery寫的文章內容頁右側浮動滾動jQuery
- JS錯誤記錄 – 右側懸浮框 – 緩衝運動JS
- 滑鼠懸浮小圖彈出大圖效果詳解
- 側欄導航自動定位效果詳解
- css3滑鼠懸浮小球彈性效果CSSS3
- IDEA 右側的maven框消失IdeaMaven
- 側邊浮動網站客服QQ網站
- 具有彈性效果的右鍵導航選單
- jQuery彈幕效果詳解jQuery
- 網頁右下角彈窗詳解網頁
- jQuery滑鼠懸浮翻牌效果詳解jQuery
- jQuery滑鼠懸浮聚焦效果詳解jQuery
- css浮動詳解CSS
- 自動彈出網頁或不定時彈出網頁的解決方法網頁
- 類似微信首頁彈性滾動和慣性滾動效果的實現——OverScroll
- js垂直右側展開導航選單詳解JS
- 商城側欄導航效果實現詳解
- js學習之——網頁側邊欄廣告效果JS網頁
- 網頁頂部陰影邊框效果網頁
- 側欄懸浮導航選單拖動滾動條可以自動定位效果
- 網頁彈框的非同步行為分析網頁非同步
- javascript網頁右下角彈窗效果JavaScript網頁
- JavaScript彈幕效果程式碼詳解JavaScript
- SVG 動畫實現彈性的頁面元素效果SVG動畫
- css之縮小視窗,網頁右側顯示白色的bugCSS網頁
- 使用jquery製作彈出框效果jQuery
- js具有跟隨彈性效果的網頁右下角視窗程式碼JS網頁
- css滑鼠懸浮彈出說明層效果CSS
- (六)仿QQ首頁drawer/側滑刪除/浮動imgaeView/角標拖拽View
- 彈框(DialogFragment)中頭像凸出效果Fragment
- 小程式底部彈框 類似picker效果
- jQuery水滴彈性摘取效果jQuery
- JavaScript數字分頁效果詳解JavaScript
- JSP/HTML頁面彈出框JSHTML
- 【C#學習筆記】網頁彈出提示框C#筆記網頁
- css滑鼠懸浮小圖彈出大圖效果CSS
- 如何使用PHP彈出警告訊息框(示例詳解)PHP