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>
代码说明
-
引入 Bootstrap 5 CSS 和 JS:
- 使用 CDN 链接引入 Bootstrap 5 的 CSS 和 JS 文件,确保下拉菜单的样式和功能正常。
- 引入 Popper.js 是因为 Bootstrap 5 依赖它来实现下拉菜单的交互功能。
-
基本下拉菜单:
- 使用
dropdown
类定义下拉菜单容器。 - 按钮使用
btn
和btn-primary
类设置样式,并添加dropdown-toggle
类和data-bs-toggle="dropdown"
属性来指示这是一个下拉菜单的触发按钮。 - 下拉菜单内容使用
dropdown-menu
类包裹的<ul>
列表,每个菜单项使用dropdown-item
类。
- 使用
-
右对齐下拉菜单:
- 在
dropdown-menu
类的基础上添加dropdown-menu-end
类,使下拉菜单右对齐。
- 在
-
带有标题和分隔线的下拉菜单:
- 在
<ul>
列表中添加<h6>
元素作为菜单标题。 - 使用
<hr>
元素添加分隔线,分隔不同的菜单项。
- 在
-
禁用菜单项的下拉菜单:
- 在某个
dropdown-item
元素上添加disabled
类和相应的属性,使其成为禁用状态。
- 在某个
-
分割按钮下拉菜单:
- 使用
btn-group
类包裹两个按钮:一个普通按钮和一个带有dropdown-toggle-split
类的按钮。 - 第二个按钮使用
visually-hidden
类隐藏文本内容,确保无障碍支持。
- 使用
-
向上、左侧和右侧展开的下拉菜单:
- 通过在
dropdown
容器上添加dropup
,dropstart
,dropend
类,分别实现下拉菜单向上、左侧和右侧展开。
- 通过在
注意事项
- 响应式设计: Bootstrap 5 的下拉菜单是响应式的,能够适应不同的屏幕尺寸。如果需要自定义样式或行为,可以根据具体需求进行调整。
- 无障碍支持: 使用
aria-expanded
和visually-hidden
类等,确保下拉菜单对辅助技术的支持。 - JavaScript 依赖: Bootstrap 5 的下拉菜单依赖于 JavaScript,因此确保在页面中正确引入 Bootstrap 的 JS 文件和 Popper.js。