固定在頂部的導航選單
很多網站的導航選單有這樣類似功能,在向下拖動滾動條的時候,能夠將導航選單固定於頂部。
本章節分享一段具有緩衝效果的類似功能,需要的朋友可以做一下參考。
程式碼例項如下:
[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()方法一章節。
相關文章
- 多功能PC端頂部導航選單
- js頂部可以伸縮的導航選單效果JS
- 網頁頂部導航選單程式碼例項網頁
- 可以固定的頂部的導航選單簡單例項程式碼單例
- flutter 自定義tab導航-頂部導航-底部導航Flutter
- 純css實現固定在網頁底部選單導航CSS網頁
- 當滑鼠滾動到指定位置,選單固定在頂部
- PbootCMS導航選單-導航選單的使用教程boot
- TesterHome 首頁頂部的導航箭頭點選沒什麼效果
- 導航選單(動畫)--- jQuery動畫jQuery
- CSS垂直導航選單CSS
- 導航和選單的教程一
- 在頂部顯示下拉選單
- CSS 動態導航選單CSS
- JavaScript 三級導航選單JavaScript
- JavaScript二級導航選單JavaScript
- jQuery滑動導航選單jQuery
- 可以應用於移動端的頂部導航固定效果
- CSS_導航欄+固定浮動的回到頂部按鈕CSS
- uni-app動態修改頂部導航欄標題APP
- 簡單實現點選回到頂部
- Element-ui之導航選單UI
- CSS導航欄及下拉選單CSS
- CSS多級導航選單效果CSS
- CSS垂直三級導航選單CSS
- 左側分類導航選單
- html-製作導航選單HTML
- ul li實現的水平導航選單
- 具有響應式效果的導航選單
- PbootCMS導航選單標籤的小技巧boot
- vue元件之路之menu導航選單Vue元件
- (四)選單導航及路由設定路由
- jQuery三級導航選單詳解jQuery
- jQuery底部跟隨水平導航選單jQuery
- 純CSS打造淘寶導航選單欄CSS
- 純css製作導航下拉選單CSS
- CSS 平行四邊形導航選單CSS
- 具有彈性效果的右鍵導航選單