香草JavaScript:創建動畫粘性導航菜單
核心要點
- 使用純JavaScript、CSS和HTML,無需jQuery插件,即可創建動畫粘性導航菜單。菜單設計為向下滾動時滑出視野,向上滾動時以半透明效果滑回視野。
- 此過程包括設置基本的HTML結構、為主要元素應用樣式,然後為菜單設置動畫。動畫通過將事件處理程序附加到滾動事件,並使用CSS轉換根據滾動方向調整菜單的位置和外觀來觸發。
- 此自定義解決方案提供更多設計靈活性,並允許根據特定需求輕鬆自定義。最終結果是一個動態的交互式導航菜單,可增強用戶體驗。
網頁導航菜單設計需考慮諸多因素,例如菜單位置、樣式和響應式設計。您可能還希望添加一些動畫效果(當然,要恰到好處)。這時,您可能會傾向於使用jQuery插件來完成大部分工作。但其實沒必要!只需幾行代碼,就能輕鬆創建自己的解決方案。
本文將演示如何使用純JavaScript、CSS和HTML創建動畫粘性導航菜單。最終產品會在您向下滾動頁面時向上滑動消失,向上滾動時(帶有時尚的半透明效果)滑回視野。 Medium和Hacker Noon等知名網站都使用了這種技術。
閱讀後,您將能夠在自己的設計中運用此技術,希望能取得良好的效果。文章末尾有一個演示,供著急的讀者參考。
粘性導航菜單:基本的HTML結構
以下是我們將使用的基本HTML代碼框架。這裡沒有什麼令人興奮的內容。
<div class="container"> <div class="banner-wrapper"> <div class="banner"> <div class="top"> </div> <div class="nav"> </div> </div> </div> <div class="content"> </div> </div>
應用一些樣式
讓我們為主要元素添加一些樣式。
主要容器
我們需要移除任何固有的瀏覽器樣式,並將容器的寬度設置為100%。
*{ box-sizing:border-box; padding: 0; margin: 0; } .container{ width: 100%; }
橫幅容器
這是導航菜單的包裝器。它始終是粘性的,並在您垂直滾動頁面時滑動以隱藏或顯示導航菜單。我們賦予它一個z-index值,以確保它顯示在內容之上。
.banner-wrapper { z-index: 4; transition: all 300ms ease-in-out; position: fixed; width: 100%; }
橫幅部分
這包含導航菜單。當頁面向上或向下滾動時,位置和背景顏色的變化通過CSS transition屬性進行動畫處理。
.banner { height: 77px; display: flex; flex-direction: column; justify-content: space-around; background: rgba(162, 197, 35, 1); transition: all 300ms ease-in-out; }
內容部分
此部分將包含背景圖像和文本。我們將在本文的後面部分為此頁面添加視差效果。
.content { background: url(https://unsplash.it/1400/1400?image=699) center no-repeat; background-size: cover; padding-top: 100%; }
菜單動畫
首先,我們需要將事件處理程序附加到滾動事件,以便在用戶滾動時可以相應地顯示和隱藏菜單。我們還將所有內容放在一個IIFE中,以避免與同一頁面上運行的其他代碼發生衝突。
<div class="container"> <div class="banner-wrapper"> <div class="banner"> <div class="top"> </div> <div class="nav"> </div> </div> </div> <div class="content"> </div> </div>
設置一些初始值
我們將使用refOffset變量來表示用戶向下滾動的距離。在頁面加載時,它初始化為0。我們將使用bannerHeight變量來存儲菜單的高度,並且還需要.banner-wrapper
和.banner
DOM元素的引用。
*{ box-sizing:border-box; padding: 0; margin: 0; } .container{ width: 100%; }
建立滾動方向
接下來,我們需要確定滾動方向,以便可以相應地顯示或隱藏菜單。
我們將從一個名為newOffset的變量開始。在頁面加載時,這將設置為window.scrollY
的值——文檔當前垂直滾動的像素數(因此最初為0)。當用戶滾動時,newOffset將相應地增加或減少。如果它大於bannerHeight中存儲的值,那麼我們就知道我們的菜單已滾動到視野之外。
.banner-wrapper { z-index: 4; transition: all 300ms ease-in-out; position: fixed; width: 100%; }
向下滾動將使newOffset大於refOffset,導航菜單應該向上滑動並消失。向上滾動將使newOffset小於refOffset,導航菜單應該以半透明效果滑回視野。進行此比較後,我們需要使用newOffset的值更新refOffset,以跟踪用戶滾動的距離。
.banner { height: 77px; display: flex; flex-direction: column; justify-content: space-around; background: rgba(162, 197, 35, 1); transition: all 300ms ease-in-out; }
菜單動畫
最後,讓我們添加一些動畫來顯示和隱藏菜單。我們可以使用以下CSS來實現:
.content { background: url(https://unsplash.it/1400/1400?image=699) center no-repeat; background-size: cover; padding-top: 100%; }
我們還應該確保一旦到達頁面頂部,就從菜單中移除半透明效果。
(() => { 'use strict'; const handler = () => { //DOM操作代码在此处 }; window.addEventListener('scroll', handler, false); })();
如您所見,我們正在相應地移除/應用不同的CSS類。
演示
這是一個工作菜單的演示。 (此處應插入CodePen演示鏈接,由於我無法訪問外部網站,無法提供實際鏈接)
結論
本文介紹瞭如何使用純JavaScript(無需jQuery)編寫幾行代碼來設計動畫導航菜單。向下滾動時,菜單會滑動消失;向上滾動時,菜單會以透明效果滑回視野。這是通過監控垂直滾動方向並在需要時將CSS轉換應用於DOM元素來實現的。這種自定義解決方案使您可以更自由地根據自己的需求和規格輕鬆靈活地進行設計。
想提升您的JavaScript技能嗎?請查看我們的課程《JavaScript入門》和《JavaScript:下一步》。
本文由Vildan Softic同行評審。感謝所有SitePoint的同行評審員,使SitePoint的內容達到最佳狀態!
(此處應包含JavaScript動畫粘性導航菜單的常見問題解答部分,內容與輸入文本中的一致。由於篇幅限制,此處省略。)
以上是香草JavaScript:創建動畫粘性導航菜單的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

實現視差滾動和元素動畫效果的探討本文將探討如何實現類似資生堂官網(https://www.shiseido.co.jp/sb/wonderland/)中�...

學習JavaScript不難,但有挑戰。 1)理解基礎概念如變量、數據類型、函數等。 2)掌握異步編程,通過事件循環實現。 3)使用DOM操作和Promise處理異步請求。 4)避免常見錯誤,使用調試技巧。 5)優化性能,遵循最佳實踐。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...

探索前端中類似VSCode的面板拖拽調整功能的實現在前端開發中,如何實現類似於VSCode...
