Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> CSS

วิธีสร้าง Hoverable Dropdown Menu (เมนูดรอปดาวน์ hover) ด้วย CSS

ตัวอย่าง Dropdown Menu แบบเรียบง่ายที่สุด ใช้ CSS Only โดย Hover ที่ปุ่มเพื่อแสดงเมนูย่อย เหมาะสำหรับปุ่ม Action หรือเมนูเล็กๆ

ตัวอย่างโค้ด

<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1" /> <style> .menu-btn {    background-color: #7e32d4;    color: white;    padding: 16px;    font-size: 20px;    font-weight: bolder;    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;    border: none; } .dropdown-menu {    position: relative;    display: inline-block; } .menu-content {    display: none;    position: absolute;    background-color: #017575;    min-width: 160px;    z-index: 1; } .links {    color: rgb(255, 255, 255);    padding: 12px 16px;    text-decoration: none;    display: block;    font-size: 18px;    font-weight: bold;    border-bottom: 1px solid black; } .links:hover {    background-color: rgb(8, 107, 46); } .dropdown-menu:hover .menu-content {    display: block; } .dropdown-menu:hover .menu-btn {    background-color: #3e8e41; } </style> </head> <body> <h2>Hover over the below dropdown button to open dropdown menu</h2> <div class="dropdown-menu"> <button class="menu-btn">Open </button> <div class="menu-content"> <a class="links" href="#">Contact Us</a> <a class="links" href="#">Visit Us</a> <a class="links" href="#">About Us</a> </div> </div> </body> </html>

โครงสร้าง HTML

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

จุดสำคัญ

  • ไม่ได้อยู่ใน <nav> - เป็น Dropdown แบบอิสระ วางได้ทุกที่
  • ลิงก์ใน Dropdown ใช้ display: block เรียงแนวตั้ง
  • มี border-bottom คั่นระหว่างรายการ
  • ปุ่มเปลี่ยนสีเมื่อ Hover (.dropdown-menu:hover .menu-btn)

ข้อจำกัด

  • ไม่ทำงานบน Touch Device (ไม่มี Hover)
  • เมนูหายทันทีเมื่อเลื่อนเมาส์ออก ต้องเพิ่ม transition-delay หรือ JS
  • ไม่รองรับ Keyboard Navigation (Accessibility)

ผลลัพธ์

ปุ่มม่วง "Open" Hover -> แสดง Dropdown สีเขียว 3 รายการ ขีดคั่นสีดำ Hover รายการ -> สีเขียวเข้ม