Bootstrap 5学习教程,从入门到精通,Bootstrap 5 下拉菜单(Dropdown)语法知识点及案例代码(29)

Bootstrap 5 下拉菜单(Dropdown)语法知识点及案例代码

Bootstrap 5 提供了强大的下拉菜单组件,用于在网页中实现可展开的选项列表。


一、Bootstrap 5 下拉菜单语法知识点

1. 引入 Bootstrap 5

在使用 Bootstrap 5 之前,需要在 HTML 文件中引入 Bootstrap 的 CSS 和 JS 文件,以及其依赖的 Popper.js。

<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">

<!-- Bootstrap JS Bundle (包含 Popper) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>

2. 基本结构

下拉菜单的基本结构包括一个按钮(触发器)和一个下拉菜单内容容器(通常使用 <div> 包裹)。

<div class="dropdown">
  <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
    下拉菜单
  </button>
  <ul class="dropdown-menu">
    <li><a class="dropdown-item" href="#">菜单项 1</a></li>
    <li><a class="dropdown-item" href="#">菜单项 2</a></li>
    <li><a class="dropdown-item" href="#">菜单项 3</a></li>
  </ul>
</div>

3. 主要类名解释

  • dropdown: 定义一个下拉菜单容器。
  • dropdown-toggle: 应用于触发下拉菜单的按钮,指示这是一个下拉菜单的切换按钮。
  • dropdown-menu: 定义下拉菜单的内容容器。
  • dropdown-item: 定义下拉菜单中的每个菜单项。

4. 数据属性

  • data-bs-toggle="dropdown": 指示按钮用于切换下拉菜单。
  • aria-expanded="false": 提供无障碍支持,指示下拉菜单的展开状态。

5. 方向调整

可以通过添加额外的类来调整下拉菜单的显示方向:

  • dropup: 下拉菜单向上展开。
  • dropend: 下拉菜单向右展开。
  • dropstart: 下拉菜单向左展开。
<div class="dropdown dropup">
  <!-- 下拉菜单内容 -->
</div>

6. 对齐方式

默认情况下,下拉菜单与触发按钮左对齐。可以使用 dropdown-menu-end 类来右对齐。

<ul class="dropdown-menu dropdown-menu-end">
  <!-- 菜单项 -->
</ul>

7. 分隔线与标题

可以在下拉菜单中添加分隔线和标题,以组织菜单项。

<ul class="dropdown-menu">
  <li><h6 class="dropdown-header">菜单标题</h6></li>
  <li><a class="dropdown-item" href="#">菜单项 1</a></li>
  <li><hr class="dropdown-divider"></li>
  <li><a class="dropdown-item" href="#">菜单项 2</a></li>
</ul>

8. 禁用菜单项

可以使用 disabled 类来禁用某个菜单项。

<li><a class="dropdown-item disabled" href="#" tabindex="-1" aria-disabled="true">禁用项</a></li>

9. 按钮样式

触发下拉菜单的按钮可以使用 Bootstrap 提供的各种按钮样式,如 btn-primary, btn-success 等。

<button class="btn btn-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
  主要按钮
</button>

10. 分割按钮下拉菜单

可以创建带有分割线的下拉按钮。

<div class="btn-group">
  <button type="button" class="btn btn-danger">操作</button>
  <button type="button" class="btn btn-danger dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
    <span class="visually-hidden">切换下拉菜单</span>
  </button>
  <ul class="dropdown-menu">
    <li><a class="dropdown-item" href="#">操作 1</a></li>
    <li><a class="dropdown-item" href="#">操作 2</a></li>
  </ul>
</div>

二、案例代码及详细注释

以下是一个完整的 Bootstrap 5 下拉菜单案例,包含不同类型的下拉菜单示例,并附有详细注释。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>Bootstrap 5 下拉菜单示例</title>
  <!-- 引入 Bootstrap 5 CSS -->
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
  <style>
    /* 自定义样式,可根据需要调整 */
    body {
      padding: 20px;
    }
    .dropdown-menu {
      max-width: 200px;
    }
  </style>
</head>
<body>

  <h2>Bootstrap 5 下拉菜单示例</h2>

  <!-- 1. 基本下拉菜单 -->
  <div class="dropdown">
    <button class="btn btn-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
      基本下拉菜单
    </button>
    <ul class="dropdown-menu">
      <li><a class="dropdown-item" href="#">菜单项 1</a></li>
      <li><a class="dropdown-item" href="#">菜单项 2</a></li>
      <li><a class="dropdown-item" href="#">菜单项 3</a></li>
    </ul>
  </div>

  <hr>

  <!-- 2. 右对齐下拉菜单 -->
  <div class="dropdown">
    <button class="btn btn-success dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
      右对齐下拉菜单
    </button>
    <ul class="dropdown-menu dropdown-menu-end">
      <li><a class="dropdown-item" href="#">菜单项 A</a></li>
      <li><a class="dropdown-item" href="#">菜单项 B</a></li>
      <li><a class="dropdown-item" href="#">菜单项 C</a></li>
    </ul>
  </div>

  <hr>

  <!-- 3. 带有标题和分隔线的下拉菜单 -->
  <div class="dropdown">
    <button class="btn btn-warning dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
      带标题和分隔线下拉菜单
    </button>
    <ul class="dropdown-menu">
      <li><h6 class="dropdown-header">菜单标题</h6></li>
      <li><a class="dropdown-item" href="#">菜单项 X</a></li>
      <li><a class="dropdown-item" href="#">菜单项 Y</a></li>
      <li><hr class="dropdown-divider"></li>
      <li><a class="dropdown-item" href="#">菜单项 Z</a></li>
    </ul>
  </div>

  <hr>

  <!-- 4. 禁用菜单项的下拉菜单 -->
  <div class="dropdown">
    <button class="btn btn-danger dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
      禁用菜单项下拉菜单
    </button>
    <ul class="dropdown-menu">
      <li><a class="dropdown-item" href="#">可用项 1</a></li>
      <li><a class="dropdown-item disabled" href="#" tabindex="-1" aria-disabled="true">禁用项</a></li>
      <li><a class="dropdown-item" href="#">可用项 2</a></li>
    </ul>
  </div>

  <hr>

  <!-- 5. 分割按钮下拉菜单 -->
  <div class="btn-group">
    <button type="button" class="btn btn-info">操作</button>
    <button type="button" class="btn btn-info dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
      <span class="visually-hidden">切换下拉菜单</span>
    </button>
    <ul class="dropdown-menu">
      <li><a class="dropdown-item" href="#">操作 1</a></li>
      <li><a class="dropdown-item" href="#">操作 2</a></li>
      <li><a class="dropdown-item" href="#">操作 3</a></li>
    </ul>
  </div>

  <hr>

  <!-- 6. 向上展开的下拉菜单 -->
  <div class="dropdown dropup">
    <button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
      向上展开下拉菜单
    </button>
    <ul class="dropdown-menu">
      <li><a class="dropdown-item" href="#">菜单项 A</a></li>
      <li><a class="dropdown-item" href="#">菜单项 B</a></li>
      <li><a class="dropdown-item" href="#">菜单项 C</a></li>
    </ul>
  </div>

  <hr>

  <!-- 7. 左侧展开的下拉菜单 -->
  <div class="dropdown dropstart">
    <button class="btn btn-dark dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
      左侧展开下拉菜单
    </button>
    <ul class="dropdown-menu">
      <li><a class="dropdown-item" href="#">菜单项 X</a></li>
      <li><a class="dropdown-item" href="#">菜单项 Y</a></li>
      <li><a class="dropdown-item" href="#">菜单项 Z</a></li>
    </ul>
  </div>

  <hr>

  <!-- 8. 右侧展开的下拉菜单 -->
  <div class="dropdown dropend">
    <button class="btn btn-light dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
      右侧展开下拉菜单
    </button>
    <ul class="dropdown-menu">
      <li><a class="dropdown-item" href="#">菜单项 M</a></li>
      <li><a class="dropdown-item" href="#">菜单项 N</a></li>
      <li><a class="dropdown-item" href="#">菜单项 O</a></li>
    </ul>
  </div>

  <!-- 引入 Bootstrap 5 JS Bundle (包含 Popper) -->
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

代码说明

  1. 引入 Bootstrap 5 CSS 和 JS:

    • 使用 CDN 链接引入 Bootstrap 5 的 CSS 和 JS 文件,确保下拉菜单的样式和功能正常。
    • 引入 Popper.js 是因为 Bootstrap 5 依赖它来实现下拉菜单的交互功能。
  2. 基本下拉菜单:

    • 使用 dropdown 类定义下拉菜单容器。
    • 按钮使用 btnbtn-primary 类设置样式,并添加 dropdown-toggle 类和 data-bs-toggle="dropdown" 属性来指示这是一个下拉菜单的触发按钮。
    • 下拉菜单内容使用 dropdown-menu 类包裹的 <ul> 列表,每个菜单项使用 dropdown-item 类。
  3. 右对齐下拉菜单:

    • dropdown-menu 类的基础上添加 dropdown-menu-end 类,使下拉菜单右对齐。
  4. 带有标题和分隔线的下拉菜单:

    • <ul> 列表中添加 <h6> 元素作为菜单标题。
    • 使用 <hr> 元素添加分隔线,分隔不同的菜单项。
  5. 禁用菜单项的下拉菜单:

    • 在某个 dropdown-item 元素上添加 disabled 类和相应的属性,使其成为禁用状态。
  6. 分割按钮下拉菜单:

    • 使用 btn-group 类包裹两个按钮:一个普通按钮和一个带有 dropdown-toggle-split 类的按钮。
    • 第二个按钮使用 visually-hidden 类隐藏文本内容,确保无障碍支持。
  7. 向上、左侧和右侧展开的下拉菜单:

    • 通过在 dropdown 容器上添加 dropup, dropstart, dropend 类,分别实现下拉菜单向上、左侧和右侧展开。

注意事项

  • 响应式设计: Bootstrap 5 的下拉菜单是响应式的,能够适应不同的屏幕尺寸。如果需要自定义样式或行为,可以根据具体需求进行调整。
  • 无障碍支持: 使用 aria-expandedvisually-hidden 类等,确保下拉菜单对辅助技术的支持。
  • JavaScript 依赖: Bootstrap 5 的下拉菜单依赖于 JavaScript,因此确保在页面中正确引入 Bootstrap 的 JS 文件和 Popper.js。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值