首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

CSS 實現純 CSS 下拉菜單:hover 觸發彈出層無需 JavaScript

     編輯:程式設計疑難解答

核心原理

利用 **`:hover` 偽類 + 絕對定位 + `display: none/block`** 實現鼠標懸停顯示子菜單,零 JS 依賴。

最小可行代碼

<!doctype html>
<style>
.trigger { position: relative; display: inline-block; }
.trigger .popup {
    position: absolute; left: 0; top: 100%; /* 緊貼觸發器底部 */
    background: #fff; border: 1px solid #000; padding: 8px;
    white-space: nowrap; display: none; /* 默認隱藏 */
    z-index: 100; box-shadow: 0 2px 8px rgba(0,0,0,.15);
}
.trigger:hover .popup { display: block; } /* 關鍵:hover 顯示 */
</style>

<div class="trigger">
    <a href="#">鼠標移動到這裡彈出層</a>
    <div class="popup">
        彈出層的內容<br/>
        彈出層的內容<br/>
        彈出層的內容
    </div>
</div>

進階增強(生產級)

需求CSS 方案
平滑動畫`opacity:0→1` + `transform: translateY(-10px)→0` + `transition`(需配合 `visibility` 而非 `display`)
點擊關閉/切換純 CSS 不可做,**需極少 JS** (`classList.toggle`) 或 `
/` 原生標簽
多級嵌套菜單`.popup .trigger:hover > .popup { display:block; }` 遞歸選擇器
鍵盤無障礙`:focus-within` 替代 `:hover`,支援 Tab 導航
移動端觸摸CSS 無 hover 概念,**必須 JS** 切換 class 或用 `
`

現代原生替代:`
` + ``

<details class="dropdown">
  <summary>點擊/hover 展開</summary>
  <div class="dropdown-content">內容...</div>
</details>

<style>
details.dropdown { position: relative; }
details.dropdown > summary { cursor: pointer; list-style: none; }
details.dropdown > summary::-webkit-details-marker { display: none; }
details.dropdown[open] .dropdown-content { display: block; }
.dropdown-content { position: absolute; top: 100%; left: 0; background: white; border: 1px solid #ccc; padding: 8px; }
</style>

**優點**:原生支援鍵盤、螢幕閱讀器、移動端觸摸、無 JS 依賴。
**缺點**:動畫定制受限、舊瀏覽器(IE)不支援。

選型建議

  • 簡單桌面端懸停菜單 → 純 CSS `:hover` 最輕量。
  • 需無障礙、移動端、動畫 → `
    ` + 少量 CSS/JS。
  • 複雜多級、動態數據、權限控制 → 成熟 UI 庫 或 自寫 JS 組件。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved