Skip to main content Skip to docs navigation

導覽列下拉選單

讓使用者從多個頁面選項中做一個或選擇,並跳轉到其選擇的頁面。


關於導覽列下拉選單元件

導覽列的下拉選單是導覽的延伸。與常駐的導覽列不同,導覽列下拉選單是短暫的存在,依據使用者的互動輸入,觸發展開選單內容,並可以再次出發收納選單內容。使用者在選單展開時,可以從多個選項中做出單一選擇,選擇的目的是用來前往別的分頁。到達新的分頁後,下拉選單則自動收納起來,整個網頁回到原導覽列的常駐狀態。

使用規範

何時該使用導覽列下拉選單

當導覽列有需要用到下拉式選單收納頁面連結,總數量不至於過多且層級(不含導覽列)不超過兩層時,請妥善利用導覽列下拉選單。

何時該考慮使用其他元件

  • 選項過少。 當連結數目不多,例如小於 3,且導覽列空間足夠時,建議直接將連結展開放置在導覽列上,供使用者一目了然的瀏覽並選擇想要前往的頁面。
  • 選項過多。 當選單內的項目太多,例如超過 15 項時,請先主動重新檢視網站的資訊架構。若無法更動,請參考 sidebar 搭配 header navigation 的呈現方式,避免用單一導覽列下拉選單一次收納過多資訊。否則,將過多內容收納在一處將會增加使用者的查找負擔。
  • 選單數目過多。 當導覽列上的導覽列下拉選單數量過多,甚至導覽列上每個連結都是用下拉選單呈現時,請參考 sidebar 搭配 header navigation 的呈現方式。

導覽列下拉選單易用性

  • 導覽列與下拉選單風格應一致。 導覽列與其下拉選單皆為導覽用,其風格應一致,幫助使用者的潛在認知,降低額外學習成本。
  • 導覽列與下拉選單底色區別。 建議在導覽列的底色與下拉選單的底色使用不同顏色以作區別。因為下拉選單是暫時出現且蓋過背後網頁內容的元件,與常駐的導覽列顏色稍作區別,能幫助使用者在瀏覽網頁時的潛在認知。
  • 避免不要的特效。 下拉選單的內容可以直接覆蓋在原網頁的內容之上,請避免另外製作非必要的特效,例如逐項展開選單,或將網頁內容下推等。
  • 避免選項數量過多。 建議不要放超過 15 個選擇。

導覽列下拉選單近用性

  • 避免使用 hover。 請避免用 hover 觸發展開選單,儘量使用 click 觸發,以減少視覺負擔。

元件設計

基本款下拉選單 Basic Dropdowns

基本款的下拉選單包括按鈕與選單。按鈕右側一律有向下的圖標作為引導。選單的寬度跟著文字的內容長度變化。

<header>
  <nav class="navbar navbar-expand-md">
    <div class="container">
      <a class="navbar-brand" href="/" aria-label="PDIS">
      網站名稱
      </a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#Navbar" aria-controls="Navbar" aria-expanded="true" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="navbar-collapse collapse" id="Navbar">
        <ul class="navbar-nav">
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="DropdownMenu1" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              服務項目
            </a>
            <ul class="dropdown-menu" aria-labelledby="DropdownMenu1">
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </nav>
</header>

副標題 Sub-heading

從基本款下拉選單的樣式延伸,可以將選單內連結分類並加上副標題。

<header>
  <nav class="navbar navbar-expand-md">
    <div class="container">
      <a class="navbar-brand" href="/" aria-label="PDIS">
      網站名稱
      </a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#Navbar" aria-controls="Navbar" aria-expanded="true" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="navbar-collapse collapse" id="Navbar">
        <ul class="navbar-nav">
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="DropdownMenu1" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              服務項目
            </a>
            <ul class="dropdown-menu" aria-labelledby="DropdownMenu1">
              <li><a class="dropdown-item dropdown-item-title unclickable">副標題名稱</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li class="dropdown-divider"></li>
              <li><a class="dropdown-item dropdown-item-title unclickable">副標題名稱</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </nav>
</header>

橫向 Horizontal

次主題的分類可以橫向排列。

<header>
  <nav class="navbar navbar-expand-md">
    <div class="container">
      <a class="navbar-brand" href="/" aria-label="PDIS">
      網站名稱
      </a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#Navbar" aria-controls="Navbar" aria-expanded="true" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="navbar-collapse collapse" id="Navbar">
        <ul class="navbar-nav">
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="DropdownMenu1" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              服務項目
            </a>
            <ul class="dropdown-menu" style="width: max-content" aria-labelledby="DropdownMenu1">
              <li class="row">
                <ul class="col-md-6">
                  <li><a class="dropdown-item dropdown-item-title unclickable">副標題名稱</a></li>
                  <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
                  <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
                  <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
                </ul>
                <ul class="col-md-6">
                  <li><a class="dropdown-item dropdown-item-title unclickable">副標題名稱</a></li>
                  <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
                  <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
                  <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </nav>
</header>

顏色 Colour

依據預設背景的顏色,下拉選單也有三種不同填色。

<header>
  <nav class="navbar navbar-expand-md">
    <div class="container">
      <a class="navbar-brand" href="/" aria-label="PDIS">
      網站名稱
      </a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#Navbar" aria-controls="Navbar" aria-expanded="true" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="navbar-collapse collapse" id="Navbar">
        <ul class="navbar-nav">
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="DropdownMenu1" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              服務項目
            </a>
            <ul class="dropdown-menu" aria-labelledby="DropdownMenu1">
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </nav>
</header>
<header>
  <nav class="navbar navbar-expand-md bg-surface">
    <div class="container navbar-brand-container">
      <a class="navbar-brand" href="/" aria-label="PDIS">
      網站名稱
      </a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#Navbar" aria-controls="Navbar" aria-expanded="true" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="navbar-collapse collapse" id="Navbar">
        <ul class="navbar-nav">
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="DropdownMenu1" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              服務項目
            </a>
            <ul class="dropdown-menu" aria-labelledby="DropdownMenu1">
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </nav>
</header>
<header>
  <nav class="navbar navbar-expand-md bg-brand-flat">
    <div class="container">
      <a class="navbar-brand" href="/" aria-label="PDIS">
      網站名稱
      </a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#Navbar" aria-controls="Navbar" aria-expanded="true" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="navbar-collapse collapse" id="Navbar">
        <ul class="navbar-nav">
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="DropdownMenu1" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              服務項目
            </a>
            <ul class="dropdown-menu" aria-labelledby="DropdownMenu1">
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </nav>
</header>

無效 Disabled

按鈕有不同狀態,除了預設、Hover 、Pressed 以外,也可以是無效狀態。

<header>
  <nav class="navbar navbar-expand-md">
    <div class="container">
      <a class="navbar-brand" href="/" aria-label="PDIS">
      網站名稱
      </a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#Navbar" aria-controls="Navbar" aria-expanded="true" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="navbar-collapse collapse" id="Navbar">
        <ul class="navbar-nav">
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="DropdownMenu1" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              服務項目
            </a>
            <ul class="dropdown-menu" aria-labelledby="DropdownMenu1">
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
            </ul>
          </li>
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle disabled" href="#" id="DropdownMenu1" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              服務項目
            </a>
            <ul class="dropdown-menu" aria-labelledby="DropdownMenu1">
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </nav>
</header>
<header>
  <nav class="navbar navbar-expand-md bg-surface">
    <div class="container navbar-brand-container">
      <a class="navbar-brand" href="/" aria-label="PDIS">
      網站名稱
      </a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#Navbar" aria-controls="Navbar" aria-expanded="true" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="navbar-collapse collapse" id="Navbar">
        <ul class="navbar-nav">
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="DropdownMenu1" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              服務項目
            </a>
            <ul class="dropdown-menu" aria-labelledby="DropdownMenu1">
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
            </ul>
          </li>
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle disabled" href="#" id="DropdownMenu1" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              服務項目
            </a>
            <ul class="dropdown-menu" aria-labelledby="DropdownMenu1">
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </nav>
</header>
<header>
  <nav class="navbar navbar-expand-md bg-brand-flat">
    <div class="container">
      <a class="navbar-brand" href="/" aria-label="PDIS">
      網站名稱
      </a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#Navbar" aria-controls="Navbar" aria-expanded="true" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="navbar-collapse collapse" id="Navbar">
        <ul class="navbar-nav">
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="DropdownMenu1" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              服務項目
            </a>
            <ul class="dropdown-menu" aria-labelledby="DropdownMenu1">
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
            </ul>
          </li>
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle disabled" href="#" id="DropdownMenu1" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              服務項目
            </a>
            <ul class="dropdown-menu" aria-labelledby="DropdownMenu1">
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </nav>
</header>

文字標籤 Text Label

文字標籤的變形有在左側加上圖標的標型,或是只有圖標沒有文字的變形。純文字搬遷為預設樣式,也用於大部分常見情境。文字與左側 icon 則是在有對應的 icon 可以加強使用者使用上的理解度才會放置。純 icon 則是在 icon 單獨存在就足以讓使用者完全理解時才使用。

<header>
  <nav class="navbar navbar-expand-md">
    <div class="container">
      <a class="navbar-brand" href="/" aria-label="PDIS">
      網站名稱
      </a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#Navbar" aria-controls="Navbar" aria-expanded="true" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="navbar-collapse collapse" id="Navbar">
        <ul class="navbar-nav">
          <li class="nav-item dropdown order-2 order-md-1">
            <a class="nav-link dropdown-toggle" href="#" id="DropdownMenu1" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              服務項目
            </a>
            <ul class="dropdown-menu" aria-labelledby="DropdownMenu1">
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
              <li><a class="dropdown-item" href="#">下拉選單第一層標題文字</a></li>
            </ul>
          </li>
          <li class="nav-item dropdown order-1 order-md-2">
            <a class="nav-link dropdown-toggle dropdown-toggle-icon d-none d-md-block" href="#" id="DropdownSearch" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              <i class="bi bi-search"></i>
            </a>
            <div class="dropdown-menu search-menu" aria-labelledby="DropdownSearch">
              <span class="dropdown-menu-title d-none d-md-block">使用關鍵字搜尋網站</span>
              <div class="input-group">
                <input type="text" class="form-control" id="Input1" placeholder="請輸入關鍵字">
                <div class="input-group-append">
                  <button class="btn btn-brand" type="button"><i class="bi bi-search"></i></button>
                </div>
              </div>
              <div class="dropdown-divider d-none d-md-block"></div>
              <div style="padding: 0.75rem 0.5rem">
                <span class="d-inline d-md-block">熱門關鍵字</span>
                <a href="#">國家科學技術發展計畫</a>
                <a href="#">申辦流程</a>
                <a href="#">啟動法規鬆綁</a>
              </div>
            </div>
          </li>
          <li class="nav-item dropdown ms-md-auto order-3">
            <a class="nav-link dropdown-toggle d-none d-md-block" href="#" id="DropdownSetting" role="button" data-bs-toggle="dropdown" aria-expanded="false">
              <i class="bi bi-gear"></i><span>網站設定 / Setting</span>
            </a>
            <ul class="dropdown-menu setting-menu" aria-labelledby="DropdownSetting">
              <li><a class="dropdown-item dropdown-item-header unclickable">網站設定 Setting</a></li>
              <li><a class="dropdown-item dropdown-item-title unclickable">語言 Language</a></li>
              <li>
                <select class="form-select" id="LanguageSelect" aria-label="LanguageSelect">
                  <option selected>請選擇一個選項</option>
                  <option value="zh-tw">繁體中文</option>
                  <option value="en-us">English (US</option>
                  <option value="en-uk">English (UK)</option>
                  <option value="jp">Japanese</option>
                  <option value="th">Thai</option>
                </select>
              </li>
              <li><a class="dropdown-item dropdown-item-title unclickable">文字大小</a></li>
              <li>
                <div class="btn-group" role="group" aria-label="Font size">
                  <button type="button" class="btn btn-brand"></button>
                  <button type="button" class="btn btn-brand">預設</button>
                  <button type="button" class="btn btn-brand"></button>
                </div>
              </li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </nav>
</header>