彈性效果網頁右側浮動框詳解
分享一段程式碼例項,它實現了網頁右側懸浮的框效果。
並且這個框具有彈性效果,並且固定在網頁的右側。
程式碼例項如下:
[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()一章節。
相關文章
- jQuery寫的文章內容頁右側浮動滾動jQuery
- JS錯誤記錄 – 右側懸浮框 – 緩衝運動JS
- 滑鼠懸浮小圖彈出大圖效果詳解
- IDEA 右側的maven框消失IdeaMaven
- 側邊浮動網站客服QQ網站
- jQuery彈幕效果詳解jQuery
- 網頁右下角彈窗詳解網頁
- jQuery滑鼠懸浮翻牌效果詳解jQuery
- jQuery滑鼠懸浮聚焦效果詳解jQuery
- css浮動詳解CSS
- 網頁頂部陰影邊框效果網頁
- 頁面table彈框
- 類似微信首頁彈性滾動和慣性滾動效果的實現——OverScroll
- JavaScript彈幕效果程式碼詳解JavaScript
- 網頁彈框的非同步行為分析網頁非同步
- 讓View具有彈性效果的動畫——SpringAnimationView動畫Spring
- 小程式底部彈框 類似picker效果
- 各種高效穩定的彈框效果
- JavaScript數字分頁效果詳解JavaScript
- (六)仿QQ首頁drawer/側滑刪除/浮動imgaeView/角標拖拽View
- 如何使用PHP彈出警告訊息框(示例詳解)PHP
- 去除 bootstrap 彈出框背景變暗的效果boot
- 解決Windows安全性登入彈框的問題Windows
- jQuery 滑鼠懸浮連結彈出跟隨圖片詳解jQuery
- css經典佈局之左側固定大小右側自動適應CSS
- Android 商品詳情頁懸浮效果以及沉浸式狀態列,無衝突Android
- JavaScript側欄緩動分享選單詳解JavaScript
- OverScroll彈性滾動和慣性滾動效果的實現原理——CoordinatorLayout+Behavior
- Winfrom中怎樣可以做到這樣的彈框效果
- 彈框
- 移動端下彈框禁止背景滑動
- css--flex彈性佈局詳解和使用CSSFlex
- 盒子屬性,及浮動
- CSS進階內容—浮動和定位詳解CSS
- 如何隱藏百度首頁右側的 實時熱點?
- 禁止網頁使用滑鼠右鍵網頁
- 點選彈出居中使用者登入框效果
- 滑鼠懸浮連結動畫高亮效果動畫