如何用CSS建立響應式下拉導航欄?


要建立一個響應式導航欄,可以使用媒體查詢。當需要為不同的裝置(如平板電腦、手機、桌上型電腦等)設定樣式時,可以使用媒體查詢。帶有下拉選單的導航欄如下所示。下拉選單包含聯絡我們、訪問我們關於我們子選單:

設定導航選單和連結樣式

此處設定導航選單的背景顏色和連結。菜單鏈接使用display屬性設定為inline-block。它將元素顯示為內聯級塊容器:

nav{
   background-color: #017575;
   width: 100%;
}
.links,.links-hidden{
   display: inline-block;
   color: rgb(255, 255, 255);
   text-decoration: none;
   font-size: 18px;
   font-weight: bold;
   padding: 20px;
}

菜單鏈接

以下是我們的菜單鏈接:

<a class="links" href="#">HOME</a>
<a class="links" href="#">EMPLOYEES</a>
<a class="links" href="#">CAREER</a>
<a class="links" href="#">Our History</a>
<a class="links" href="#">Fund Us</a>
<a class="links" href="#">More Info</a>

下拉菜單鏈接

以下是設定為下拉選單的菜單鏈接其他

<div class="dropdown-menu">
   <button class="menu-btn">Others <</button>
   <div class="menu-content">
      <a class="links-hidden" href="#">Contact Us</a>
      <a class="links-hidden" href="#">Visit Us</a>
      <a class="links-hidden" href="#">About Us</a>
   </div>
</div>

設定下拉鍊接樣式

這就是下拉選單的樣式:

.dropdown-menu:hover .menu-content {
   display: block;
}
.dropdown-menu:hover .menu-btn {
   background-color: #3e8e41;
}

漢堡選單

漢堡選單是三條疊加的線。它用於響應式設計,當瀏覽器大小減小時(即出現在平板電腦和手機上)出現:

<a class="hamburger">☰</a>

響應式媒體查詢

以下是為平板電腦和手機檢視設定的:

@media screen and (max-width: 880px) {
   nav a:not(:first-child) {
      display: none;
   }
   nav a.hamburger {
      float: right;
      display: block;
      padding: 12px;
   }
   .dropdown-menu{
      display: none;
   }
   nav.openNav a.hamburger {
      position: relative;
   }
   nav.openNav a {
      float: none;
      display: block;
      text-align: center;
   }
}

示例

以下是建立帶下拉選單的響應式導航欄的程式碼:

<!DOCTYPE html>
<html>
<head>
   <meta name="viewport" content="width=device-width, initial-scale=1" />
   <style>
      *,*::after,*::before{
         box-sizing: border-box;
      }
      .menu-btn {
         font-size: 18px;
         font-weight: bold;
         display: inline-block;
         text-align: center;
         background-color: #040008;
         color: white;
         padding: 20px;
         font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
         border: none;
         width: 100%;
      }
      .dropdown-menu {
         position: relative;
         display: inline-block;
      }
      .menu-content {
         display: none;
         position: absolute;
         width: 100%;
         background-color: #017575;
         min-width: 160px;
         z-index: 1;
      }
      nav{
         background-color: #017575;
         width: 100%;
      }
      .links,.links-hidden{
         display: inline-block;
         color: rgb(255, 255, 255);
         text-decoration: none;
         font-size: 18px;
         font-weight: bold;
         padding: 20px;
      }
      .links-hidden:hover,.links:hover {
         background-color: rgb(8, 107, 46);
      }
      .dropdown-menu:hover .menu-content {
         display: block;
      }
      .dropdown-menu:hover .menu-btn {
         background-color: #3e8e41;
      }
      .hamburger {
         color: white;
         font-weight: bolder;
         display: none;
      }
      @media screen and (max-width: 880px) {
         nav a:not(:first-child) {
            display: none;
         }
         nav a.hamburger {
            float: right;
            display: block;
            padding: 12px;
         }
         .dropdown-menu{
            display: none;
         }
         nav.openNav a.hamburger {
            position: relative;
         }
         nav.openNav a {
            float: none;
            display: block;
            text-align: center;
         }
      }
      nav.openNav div.dropdown-menu{
         display: block;
         width: 100%;
      }
   </style>
</head>
<body>
   <nav>
      <a class="links" href="#">HOME</a>
      <a class="links" href="#">EMPLOYEES</a>
      <a class="links" href="#">CAREER</a>
      <a class="links" href="#">Our History</a>
      <a class="links" href="#">Fund Us</a>
      <a class="links" href="#">More Info</a>
      <div class="dropdown-menu">
         <button class="menu-btn">Open <</button>
         <div class="menu-content">
            <a class="links-hidden" href="#">Contact Us</a>
            <a class="links-hidden" href="#">Visit Us</a>
            <a class="links-hidden" href="#">About Us</a>
         </div>
      </div>
      <a class="hamburger">☰</a>
   </nav>
   <script>
      var x = document.getElementsByTagName("nav")[0];
      function toggleNav() {
         if (x.className === "") {
         x.className = " openNav";
         }
         else {
            x.className = "";
         }
      }
      document.querySelector(".hamburger").addEventListener("click", toggleNav);
   </script>
</body>
</html>

更新於:2023年10月27日

2K+瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告