Menu
CoddyTech

下拉菜单

本课属于 Coddy HTML 学习旅程的“前端实践”单元。第 20 课,共 35 课。

下拉菜单是一种导航项,用户将鼠标悬停在它上面或将焦点移到它上面时,会显示更多链接。本章将重点介绍纯 CSS 实现方式,而不是使用 JavaScript。它通过 :hover 或 :focus-within 显示隐藏的菜单。

为什么使用它们:

  • 节省导航栏空间。
  • 让界面保持简洁、有条理。
  • 经过适当调整后,适用于移动优先和响应式设计。

HTML:

<div class="dropdown">
  <button class="dropdown-button">Menu</button>
  <div class="dropdown-content">
    <a href="#">Option 1</a>
    <a href="#">Option 2</a>
    <a href="#">Option 3</a>
  </div>
</div>

CSS: 

//The .dropdown is position: relative 
//so the dropdown content can be positioned correctly with position: absolute.
.dropdown {
  position: relative;
  display: inline-block;
}
//The .dropdown-content is hidden by default using display: none.
.dropdown-content {
  display: none;
  position: absolute;
}
//When the user hovers over the .dropdown container, 
//the .dropdown-content is shown using display: block.
.dropdown:hover .dropdown-content {
  display: block;
}

使用这段代码,当你将鼠标悬停在下拉菜单容器上(包括按钮),下拉菜单内容就会显示。

challenge icon

挑战

简单

给你提供了一个下拉菜单的 HTML,其中有一个标记为 "Select Color" 的按钮和三个选项:Red, Green, Blue。

你的任务是使用 CSS 设置下拉菜单的样式,使其满足以下要求:

  1. 这些选项默认隐藏。
  2. 当用户将鼠标悬停在下拉菜单容器上时,这些选项变为可见。

亲手试试

<!DOCTYPE html>
<html>
<head>
  <title>Dropdown menu</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      padding: 50px;
      background-color: #f0f0f0;
    }

    .dropdown {
      position: relative;
      display: inline-block;
    }

    .dropdown-button {
      padding: 10px 20px;
      font-size: 16px;
      cursor: pointer;
      border: 1px solid #333;
      border-radius: 5px;
      background-color: #ffffff;
    }

    .dropdown-content {
      position: absolute;
      top: 100%;
      left: 0;
      background-color: #ffffff;
      min-width: 160px;
      border: 1px solid #ccc;
      border-radius: 5px;
      box-shadow: 0 2px 5px rgba(0,0,0,0.2);
      z-index: 1;
    }

    .dropdown-content a {
      display: block;
      padding: 10px;
      text-decoration: none;
      color: #333;
    }

    .dropdown-content a:hover {
      background-color: #f2f2f2;
    }

    /* Show dropdown on hover or focus */
    .dropdown:hover .dropdown-content,
    .dropdown:focus-within .dropdown-content {

    }
  </style>
</head>
<body>

  <div class="dropdown">
    <button class="dropdown-button">Select Color</button>
    <div class="dropdown-content">
      <a href="#">Red</a>
      <a href="#">Green</a>
      <a href="#">Blue</a>
    </div>
  </div>

</body>
</html>
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

前端实践中的所有课

自己练习: Web 在线编辑器