国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
主要容器
橫幅容器
橫幅部分
內(nèi)容部分
設置一些初始值
建立滾動方向
首頁 web前端 js教程 香草JavaScript:創(chuàng)建動畫粘性導航菜單

香草JavaScript:創(chuàng)建動畫粘性導航菜單

Feb 16, 2025 am 11:16 AM

Vanilla Javascript: Creating Animated Sticky Navigation Menu

核心要點

  • 使用純JavaScript、CSS和HTML,無需jQuery插件,即可創(chuàng)建動畫粘性導航菜單。菜單設計為向下滾動時滑出視野,向上滾動時以半透明效果滑回視野。
  • 此過程包括設置基本的HTML結構、為主要元素應用樣式,然后為菜單設置動畫。動畫通過將事件處理程序附加到滾動事件,并使用CSS轉換根據(jù)滾動方向調(diào)整菜單的位置和外觀來觸發(fā)。
  • 此自定義解決方案提供更多設計靈活性,并允許根據(jù)特定需求輕松自定義。最終結果是一個動態(tài)的交互式導航菜單,可增強用戶體驗。

網(wǎng)頁導航菜單設計需考慮諸多因素,例如菜單位置、樣式和響應式設計。您可能還希望添加一些動畫效果(當然,要恰到好處)。這時,您可能會傾向于使用jQuery插件來完成大部分工作。但其實沒必要!只需幾行代碼,就能輕松創(chuàng)建自己的解決方案。

本文將演示如何使用純JavaScript、CSS和HTML創(chuàng)建動畫粘性導航菜單。最終產(chǎn)品會在您向下滾動頁面時向上滑動消失,向上滾動時(帶有時尚的半透明效果)滑回視野。Medium和Hacker Noon等知名網(wǎng)站都使用了這種技術。

閱讀后,您將能夠在自己的設計中運用此技術,希望能取得良好的效果。文章末尾有一個演示,供著急的讀者參考。

粘性導航菜單:基本的HTML結構

以下是我們將使用的基本HTML代碼框架。這里沒有什么令人興奮的內(nèi)容。

<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>

應用一些樣式

讓我們?yōu)橹饕靥砑右恍邮健?/p>

主要容器

我們需要移除任何固有的瀏覽器樣式,并將容器的寬度設置為100%。

*{
  box-sizing:border-box;
  padding: 0;
  margin: 0;
}

.container{
  width: 100%;
}

橫幅容器

這是導航菜單的包裝器。它始終是粘性的,并在您垂直滾動頁面時滑動以隱藏或顯示導航菜單。我們賦予它一個z-index值,以確保它顯示在內(nèi)容之上。

.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;
}

內(nèi)容部分

此部分將包含背景圖像和文本。我們將在本文的后面部分為此頁面添加視差效果。

.content {
  background: url(https://unsplash.it/1400/1400?image=699) center no-repeat;
  background-size: cover;
  padding-top: 100%;
}

菜單動畫

首先,我們需要將事件處理程序附加到滾動事件,以便在用戶滾動時可以相應地顯示和隱藏菜單。我們還將所有內(nèi)容放在一個IIFE中,以避免與同一頁面上運行的其他代碼發(fā)生沖突。

<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的值——文檔當前垂直滾動的像素數(shù)(因此最初為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來實現(xiàn):

.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演示鏈接,由于我無法訪問外部網(wǎng)站,無法提供實際鏈接)

結論

本文介紹了如何使用純JavaScript(無需jQuery)編寫幾行代碼來設計動畫導航菜單。向下滾動時,菜單會滑動消失;向上滾動時,菜單會以透明效果滑回視野。這是通過監(jiān)控垂直滾動方向并在需要時將CSS轉換應用于DOM元素來實現(xiàn)的。這種自定義解決方案使您可以更自由地根據(jù)自己的需求和規(guī)格輕松靈活地進行設計。

想提升您的JavaScript技能嗎?請查看我們的課程《JavaScript入門》和《JavaScript:下一步》。

本文由Vildan Softic同行評審。感謝所有SitePoint的同行評審員,使SitePoint的內(nèi)容達到最佳狀態(tài)!

(此處應包含JavaScript動畫粘性導航菜單的常見問題解答部分,內(nèi)容與輸入文本中的一致。由于篇幅限制,此處省略。)

以上是香草JavaScript:創(chuàng)建動畫粘性導航菜單的詳細內(nèi)容。更多信息請關注PHP中文網(wǎng)其他相關文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用于不同的應用場景。Java用于大型企業(yè)和移動應用開發(fā),而JavaScript主要用于網(wǎng)頁開發(fā)。

JavaScript評論:簡短說明 JavaScript評論:簡短說明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

如何在JS中與日期和時間合作? 如何在JS中與日期和時間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時間處理需注意以下幾點:1.創(chuàng)建Date對象有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設置時間信息可用get和set方法,注意月份從0開始;3.手動格式化日期需拼接字符串,也可使用第三方庫;4.處理時區(qū)問題建議使用支持時區(qū)的庫,如Luxon。掌握這些要點能有效避免常見錯誤。

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

為什么要將標簽放在的底部? 為什么要將標簽放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript:探索用于高效編碼的數(shù)據(jù)類型 JavaScript:探索用于高效編碼的數(shù)據(jù)類型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

Java和JavaScript有什么區(qū)別? Java和JavaScript有什么區(qū)別? Jun 17, 2025 am 09:17 AM

Java和JavaScript是不同的編程語言。1.Java是靜態(tài)類型、編譯型語言,適用于企業(yè)應用和大型系統(tǒng)。2.JavaScript是動態(tài)類型、解釋型語言,主要用于網(wǎng)頁交互和前端開發(fā)。

什么是在DOM中冒泡和捕獲的事件? 什么是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個階段,捕獲是從頂層向下到目標元素,冒泡是從目標元素向上傳播到頂層。1.事件捕獲通過addEventListener的useCapture參數(shù)設為true實現(xiàn);2.事件冒泡是默認行為,useCapture設為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委托,提高動態(tài)內(nèi)容處理效率;5.捕獲可用于提前攔截事件,如日志記錄或錯誤處理。了解這兩個階段有助于精確控制JavaScript響應用戶操作的時機和方式。

See all articles