固定在頂部的導航選單
很多網站的導航選單有這樣類似功能,在向下拖動滾動條的時候,能夠將導航選單固定於頂部。
本章節分享一段具有緩衝效果的類似功能,需要的朋友可以做一下參考。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> *{ margin:0; padding:0; } ul,li{list-style:none;} #content{ width:600px; margin:0 auto; border:1px solid #f00; } ul li.item{ width:400px; text-align:center; margin:20px 100px; background:#00f; color:#fff; font-size:14px; font-weight:bold; height:100px; line-height:100px; } #float_banner{ position:absolute; top:0; left:50%; width:900px; margin-left:-450px; height:30px; line-height:30px; text-align:center; background:#000; color:#fff; font-size:14px; font-weight:bold; z-index:2; } </style> <script> window.onload = function () { var speed = 100; var scrollTop = null; var float_banner; var pos = null; var timer = null; var moveHeight = null; float_banner = document.getElementById("float_banner"); window.onscroll = scroll_ad; function scroll_ad() { pos = document.documentElement.scrollTop - float_banner.offsetTop; pos = pos / 10 moveHeight = pos > 0 ? Math.ceil(pos) : Math.floor(pos); if (moveHeight != 0) { float_banner.style.top = float_banner.offsetTop + moveHeight + "px"; setTimeout(scroll_ad, speed); } } } </script> </head> <body> <div id="float_banner">這裡是頂部的橫幅,隨著頁面滾動而浮動</div> <ul id="content"> <li class="item">第一塊內容</li> <li class="item">第二塊內容</li> <li class="item">第三塊內容</li> <li class="item">第四塊內容</li> <li class="item">第五塊內容</li> <li class="item">第六塊內容</li> <li class="item">第七塊內容</li> <li class="item">第八塊內容</li> <li class="item">第九塊內容</li> <li class="item">第十塊內容</li> </ul> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).window.onload = function () {},當文件內容完全載入完畢再去執行函式中的程式碼。
(2).var speed = 100,用作定時器函式的重複執行間隔。
(3).var scrollTop = null,宣告一個變數並賦值為null,後面會用到。
(4).var float_banner,儲存頂部導航欄元素物件。
(5).var pos = null,宣告一個變數後面會用到。
(6).var timer = null,宣告一個變數用作定時器函式的標識。
(7).var moveHeight = null,宣告一個變數後面會用到。
(8).float_banner = document.getElementById("float_banner"),獲取頂部導航欄元素物件。
(9).window.onscroll = scroll_ad,註冊onscroll事件處理函式。
(10).function scroll_ad() {},此函式作為onscroll事件的事件處理函式。
(11).pos = document.documentElement.scrollTop - float_banner.offsetTop,獲取scrollTop和導航選單距離body的距離之差。
(12).pos = pos / 10,除以10。
(13).moveHeight = pos > 0 ? Math.ceil(pos) : Math.floor(pos),如果pos大於0,那麼上舍入,否則下舍入。pos大於0,說明是在向下拖動滾動選單,小於0是向上拖動滾動選單。
(14).if (moveHeight != 0) {
float_banner.style.top = float_banner.offsetTop + moveHeight + "px";
setTimeout(scroll_ad, speed);
}不等於0,說明scrollTop - float_banner.offsetTop差還不相等,導航選單沒有位於頂部。
那麼繼續設定導航選單的top值。
並且使用setTimeout()遞迴呼叫函式本身。
二.相關閱讀:
(1).window.onscroll事件參閱JavaScript scroll事件一章節。
(2).document.documentElement.scrollTop參閱JavaScript scrollTop一章節。
(3).offsetTop參閱JavaScript offsetTop一章節。
(4).Math.ceil()參閱JavaScript Math.ceil()一章節。
(5).Math.floor()參閱JavaScript Math.floor()一章節。
(6).setTimeout()參閱setTimeout()方法一章節。
相關文章
- flutter 自定義tab導航-頂部導航-底部導航Flutter
- PbootCMS導航選單-導航選單的使用教程boot
- 當滑鼠滾動到指定位置,選單固定在頂部
- TesterHome 首頁頂部的導航箭頭點選沒什麼效果
- CSS垂直導航選單CSS
- JavaScript二級導航選單JavaScript
- CSS 動態導航選單CSS
- 導航選單(動畫)--- jQuery動畫jQuery
- JavaScript 三級導航選單JavaScript
- CSS導航欄及下拉選單CSS
- CSS多級導航選單效果CSS
- CSS垂直三級導航選單CSS
- Element-ui之導航選單UI
- JavaScript slide下拉導航選單效果JavaScriptIDE
- uni-app動態修改頂部導航欄標題APP
- PbootCMS導航選單標籤的小技巧boot
- 簡單實現點選回到頂部
- 寫一個佈局,當頁面滾動一定高時,導航始終固定在頂部,反之恢復原位
- jQuery三級導航選單詳解jQuery
- 純css製作導航下拉選單CSS
- (四)選單導航及路由設定路由
- vue元件之路之menu導航選單Vue元件
- [開發教程] 第32講:Bootstrap導航選單裡的下拉選單boot
- 短視訊app製作,去除當前自帶的頂部導航欄APP
- 成品直播原始碼,頂部導航欄部分支援左右滑動原始碼
- jQuery 淡入淡出效果下拉導航選單jQuery
- CSS三級下拉導航選單詳解CSS
- JavaScript橫向二級導航選單效果JavaScript
- CSS3麵包屑導航選單CSSS3
- JavaScript可摺疊屬性導航選單JavaScript
- JavaScript下拉摺疊導航選單講解JavaScript
- 純CSS打造淘寶導航選單欄CSS
- CSS3垂直摺疊導航選單CSSS3
- CSS水平導航選單製作詳解CSS
- CSS 水平導航選單製作詳解CSS
- CSS3橫向導航選單效果CSSS3
- 滑鼠懸浮緩慢下拉導航選單
- CSS 可伸縮圓角導航選單CSS