整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          用HTML、CSS 和 JS 構建一個響應式導航欄菜單-教程

          5自適應是現在主流的技術,導航欄菜單是最常見的一種,今天我們一起來學習一下它是如何使用HTML,CSS和JavaScript來構建響應式導航欄和漢堡菜單的。

          這就是它的樣子,是不是很熟悉呢?

          H5導航菜單

          好的,那就先從HTML開始:

          <header class=”header”>
          <nav class=”navbar”>
          <a href=”#” class=”nav-logo”>WebDev.</a>
          <ul class=”nav-menu”>
          <li class=”nav-item”>
          <a href=”#” class=”nav-link”>Services</a>
          </li>
          <li class=”nav-item”>
          <a href=”#” class=”nav-link”>Blog</a>
          </li>
          <li class=”nav-item”>
          <a href=”#” class=”nav-link”>About</a>
          </li>
          <li class=”nav-item”>
          <a href=”#” class=”nav-link”>Contact</a>
          </li>
          </ul>
          <div class=”hamburger”>
          <span class=”bar”></span>
          <span class=”bar”></span>
          <span class=”bar”></span>
          </div>
          </nav>
          </header>

          通過這些代碼,我們實現了:

          • 給header標簽指定名為header的CSS類的,可以作為導航菜單的容器。
          • 給nav標簽指定名為navbar的CSS類。
          • 具有nav-logo類的鏈接
          • 具有nav-menu類的ul
          • 在ul內部,我們有4個具有nav-item類的li
          • 在每個nav-item中,都有一個包含nav-link類的鏈接
          • 至于漢堡菜單,我已在代碼中添加了一個具有hamburger類的div,且此div中有3個帶bar類的span

          以上就是我們需要的HTML代碼。

          現在讓我們添加CSS樣式重置代碼

          (此外,我們將導入所需的字體,并添加一些基本的CSS來重置所有的默認樣式。)

          @import url(‘https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,500;1,400&display=swap’);
          
          * {
          margin: 0;
          padding: 0;
          box-sizing: border-box;
          }
          
          html {
          font-size: 62.5%;
          font-family: ‘Roboto’, sans-serif;
          }
          
          li {
          list-style: none;
          }
          
          a {
          text-decoration: none;
          }

          現在讓我們給每個元素逐個添加樣式:

          header和navbar:

          .header{
          border-bottom: 1px solid #E2E8F0;
          }
          
          .navbar {
          display: flex;
          justify-content: space-between;
          align-items: center;
          padding: 1rem 1.5rem;
          }


          hamburger樣式:

          .hamburger {
          display: none;
          }
          
          .bar {
          display: block;
          width: 25px;
          height: 3px;
          margin: 5px auto;
          -webkit-transition: all 0.3s ease-in-out;
          transition: all 0.3s ease-in-out;
          background-color: #101010;
          }


          其他元素的基本樣式:

          .nav-menu {
          display: flex;
          justify-content: space-between;
          align-items: center;
          }
          
          .nav-item {
          margin-left: 5rem;
          }
          
          .nav-link{
          font-size: 1.6rem;
          font-weight: 400;
          color: #475569;
          }
          
          .nav-link:hover{
          color: #482ff7;
          }
          
          .nav-logo {
          font-size: 2.1rem;
          font-weight: 500;
          color: #482ff7;
          }

          完成這些之后,看起來應該是這樣的:

          但是它不是響應式的,所以我們還需要添加媒體查詢css代碼。

          @media only screen and (max-width: 768px) {
          .nav-menu {
          position: fixed;
          left: -100%;
          top: 5rem;
          flex-direction: column;
          background-color: #fff;
          width: 100%;
          border-radius: 10px;
          text-align: center;
          transition: 0.3s;
          box-shadow:
          0 10px 27px rgba(0, 0, 0, 0.05);
          }
          
          .nav-menu.active {
          left: 0;
          }
          
          .nav-item {
          margin: 2.5rem 0;
          }
          
          .hamburger {
          display: block;
          cursor: pointer;
          }
          
          }


          這里媒體查詢就是通過設置position: fixed; left: -100%;來隱藏nav-menu。

          此外,我們將hamburger設置為display: block;,所以現在可見。

          我們還添加了一個額外的類.nav-menu.active,它在nav-menu上設置left: 0;。現在,到了添加javascript的時候了,以便在我們單擊漢堡菜單時,會在nav-menu上添加此active類。

          添加JavaScript

          const hamburger = document.querySelector(“.hamburger”);
          const navMenu = document.querySelector(“.nav-menu”);
          
          hamburger.addEventListener(“click”, mobileMenu);
          
          function mobileMenu() {
          hamburger.classList.toggle(“active”);
          navMenu.classList.toggle(“active”);
          }


          此處的函數mobileMenu()在hamburger和nav-menu上也添加了一個active類,從而打開mobile menu。單擊hamburger時,我們可以使用hamburger上的active類來創建X動畫。現在就開始做吧。

          // Inside the Media Query.
          
          .hamburger.active .bar:nth-child(2) {
          opacity: 0;
          }
          
          .hamburger.active .bar:nth-child(1) {
          transform: translateY(8px) rotate(45deg);
          }
          
          .hamburger.active .bar:nth-child(3) {
          transform: translateY(-8px) rotate(-45deg);
          }

          現在看起來應該是這樣的:

          但是有一個問題,當我們單擊鏈接時,漢堡菜單不會關閉。現在讓我們解決一下這個問題。

          const navLink = document.querySelectorAll(“.nav-link”);
          
          navLink.forEach(n => n.addEventListener(“click”, closeMenu));
          
          function closeMenu() {
          hamburger.classList.remove(“active”);
          navMenu.classList.remove(“active”);
          }

          closeMenu()函數從nav-menu和hamburger中刪除active類,從而關閉mobile menu。

          H5導航菜單就是這樣,實現了用HTML,CSS和javascript構建一個響應式的導航欄菜單。希望你喜歡并分享這篇文章。感謝大家的閱讀。

          更多干貨等著你~ 點贊、分享,關注哦

          文為大家介紹如何使用 CSS 創建一個帶搜索的導航欄。

          以下實例均是響應式的。

          可以先看下效果圖:

          創建一個搜索欄

          HTML 代碼

          <div class="topnav">

          <a class="active" href="#home">主頁</a>

          <a href="#about">關于</a>

          <a href="#contact">聯系我們</a>

          <input type="text" placeholder="搜索..">

          </div>

          CSS 代碼

          /* 在頂部導航欄中添加黑色背景顏色 */

          .topnav {

          overflow: hidden;

          background-color: #e9e9e9;

          }

          家好,今天給大家介紹一款,JavaScript實現的多功能側邊導航菜單源碼(圖1)。送給大家哦,獲取方式在本文末尾。

          圖1

          可以菜單在左邊彈出,也可以設置菜單在右邊彈出(圖2)

          圖2

          圖2

          可以設置為子菜單重疊樣式(圖3)

          圖3

          可以設置為擴展樣式(圖4)

          圖4

          可以設置為直接展開樣式(圖5)

          圖5

          自適應各種分辨率(圖6)

          圖6

          本模板編碼:10138,需要的朋友,點擊下面的鏈接后,搜索10138,即可獲取。

          「鏈接」


          主站蜘蛛池模板: 国产av夜夜欢一区二区三区| 中文字幕在线精品视频入口一区| 精品福利一区二区三| 亚洲男女一区二区三区| 日本高清成本人视频一区| 搜日本一区二区三区免费高清视频| 国产高清视频一区三区| 国产精品高清一区二区三区不卡| 任你躁国语自产一区在| 一区二区三区四区在线播放 | 无码av免费一区二区三区| 亚洲一区二区三区不卡在线播放| 夜精品a一区二区三区| 精品一区二区三区色花堂| 免费一本色道久久一区| 亚洲国产成人久久综合一区| 国产伦精品一区二区| 亚洲国产av一区二区三区丶| 欧洲精品免费一区二区三区| 中文字幕在线无码一区| 成人精品一区久久久久| 亚洲第一区二区快射影院| 天天爽夜夜爽人人爽一区二区| 日韩免费无码视频一区二区三区 | 日韩人妻无码一区二区三区 | 国内精品视频一区二区三区| 国产日韩高清一区二区三区 | 一区二区三区视频观看| 久久精品国产一区二区三| 国产产一区二区三区久久毛片国语| 污污内射在线观看一区二区少妇 | 久久精品无码一区二区三区| 精品不卡一区中文字幕 | 精品日韩一区二区| 亚洲国产一区二区三区在线观看| 一区二区三区视频在线| 中文字幕在线不卡一区二区| 精品一区二区视频在线观看| 日韩在线不卡免费视频一区| 无码乱人伦一区二区亚洲一| 久久久久人妻一区二区三区|