Bootstrap - 下拉菜单:初学者指南
你好,未来的网页开发者们!今天,我们将深入Bootstrap下拉菜单的奇妙世界。作为你友好的计算机老师邻居,我很兴奋能引导你走过这段旅程。如果你之前从未写过一行代码,也不用担心——我们将从头开始,逐步构建。那么,拿起一杯咖啡(或者茶,如果你喜欢的话),让我们开始吧!
下拉菜单是什么?
在深入代码之前,让我们先聊聊下拉菜单是什么。想象你在一个餐馆,服务员递给你一份菜单。那份菜单就像一个下拉菜单——它给你提供了一系列的选择。在网页设计中,下拉菜单的工作原理类似。它们是向用户展示多个选择的紧凑方式,而不会让你的网页显得杂乱。
基本下拉菜单
让我们从最基本下拉菜单开始。这是Bootstrap中的样子:
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
下拉按钮
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<li><a class="dropdown-item" href="#">操作</a></li>
<li><a class="dropdown-item" href="#">另一个操作</a></li>
<li><a class="dropdown-item" href="#">在这里的其他事项</a></li>
</ul>
</div>
让我们分解一下:
- 我们从一个带有
dropdown
类的<div>
开始。这是我们的容器。 - 在里面,我们有一个触发下拉菜单的
<button>
。注意dropdown-toggle
类和data-bs-toggle="dropdown"
属性。 - 带有
dropdown-menu
类的<ul>
是我们的实际下拉内容。 -
<ul>
中的每个<li>
都是下拉菜单中的一个项目。
下拉按钮与下拉链接
你可以使用按钮或链接来创建下拉菜单。下面是它们的不同之处:
下拉按钮
我们已经在基本示例中看到了这个。它使用了<button>
元素:
<div class="dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
下拉按钮
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<!-- 菜单项 -->
</ul>
</div>
下拉链接
对于基于链接的下拉菜单,我们使用<a>
标签:
<div class="dropdown">
<a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-bs-toggle="dropdown" aria-expanded="false">
下拉链接
</a>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuLink">
<!-- 菜单项 -->
</ul>
</div>
主要区别在于使用的HTML元素(<button>
vs <a>
),但它们的函数相似。
变体
Bootstrap为下拉菜单提供了多种颜色变体。你可以将btn-secondary
类更改为以下任意一个:
btn-primary
btn-success
btn-info
btn-warning
btn-danger
btn-light
btn-dark
例如:
<div class="dropdown">
<button class="btn btn-danger dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
危险下拉菜单
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<!-- 菜单项 -->
</ul>
</div>
分隔按钮
分隔按钮下拉菜单将按钮操作与下拉切换分离:
<div class="btn-group">
<button type="button" class="btn btn-primary">操作</button>
<button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">切换下拉菜单</span>
</button>
<ul class="dropdown-menu">
<!-- 菜单项 -->
</ul>
</div>
在这里,点击按钮的左侧部分执行操作,而右侧部分打开下拉菜单。
大小
你可以通过添加btn-lg
或btn-sm
类来创建更大或更小的下拉菜单:
大型下拉按钮
<div class="dropdown">
<button class="btn btn-secondary btn-lg dropdown-toggle" type="button" id="dropdownMenuButtonLarge" data-bs-toggle="dropdown" aria-expanded="false">
大型下拉菜单
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonLarge">
<!-- 菜单项 -->
</ul>
</div>
小型下拉按钮
<div class="dropdown">
<button class="btn btn-secondary btn-sm dropdown-toggle" type="button" id="dropdownMenuButtonSmall" data-bs-toggle="dropdown" aria-expanded="false">
小型下拉菜单
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonSmall">
<!-- 菜单项 -->
</ul>
</div>
暗色下拉菜单
对于时尚的暗色主题下拉菜单,将dropdown-menu-dark
类添加到你的dropdown-menu
:
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
暗色下拉菜单
</button>
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="dropdownMenuButton">
<!-- 菜单项 -->
</ul>
</div>
方向
Bootstrap允许你更改下拉菜单的方向。让我们探索这些选项:
居中下拉菜单
要将下拉菜单居中对齐,请将dropdown-center
类添加到容器:
<div class="dropdown-center">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownCenteredButton" data-bs-toggle="dropdown" aria-expanded="false">
居中下拉菜单
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownCenteredButton">
<!-- 菜单项 -->
</ul>
</div>
向上弹出
对于向上弹出的下拉菜单,使用dropup
类:
<div class="dropup">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropupMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
向上弹出
</button>
<ul class="dropdown-menu" aria-labelledby="dropupMenuButton">
<!-- 菜单项 -->
</ul>
</div>
居中向上弹出
结合dropup
和dropdown-center
以创建居中的向上弹出:
<div class="dropup-center dropup">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropupCenteredButton" data-bs-toggle="dropdown" aria-expanded="false">
居中向上弹出
</button>
<ul class="dropdown-menu" aria-labelledby="dropupCenteredButton">
<!-- 菜单项 -->
</ul>
</div>
向右弹出
对于向右弹出的下拉菜单,使用dropend
类:
<div class="dropend">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropendMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
向右弹出
</button>
<ul class="dropdown-menu" aria-labelledby="dropendMenuButton">
<!-- 菜单项 -->
</ul>
</div>
向左弹出
对于向左弹出的下拉菜单,使用dropstart
类:
<div class="dropstart">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropstartMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
向左弹出
</button>
<ul class="dropdown-menu" aria-labelledby="dropstartMenuButton">
<!-- 菜单项 -->
</ul>
</div>
菜单项
现在,让我们聊聊下拉菜单内部的内容。你有几个选项:
头部
添加一个头部来分组菜单项:
<ul class="dropdown-menu">
<li><h6 class="dropdown-header">下拉头部</h6></li>
<li><a class="dropdown-item" href="#">操作</a></li>
<li><a class="dropdown-item" href="#">另一个操作</a></li>
</ul>
分隔线
使用分隔线来分隔相关菜单项的组:
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">操作</a></li>
<li><a class="dropdown-item" href="#">另一个操作</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">在这里的其他事项</a></li>
</ul>
文本
你也可以包含非交互式文本:
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">操作</a></li>
<li><a class="dropdown-item" href="#">另一个操作</a></li>
<li><a class="dropdown-item" href="#">在这里的其他事项</a></li>
<li><span class="dropdown-item-text">下拉项文本</span></li>
</ul>
表单
你甚至可以在下拉菜单中包含表单:
<div class="dropdown-menu">
<form class="px-4 py-3">
<div class="mb-3">
<label for="exampleDropdownFormEmail1" class="form-label">电子邮件地址</label>
<input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="[email protected]">
</div>
<div class="mb-3">
<label for="exampleDropdownFormPassword1" class="form-label">密码</label>
<input type="password" class="form-control" id="exampleDropdownFormPassword1" placeholder="密码">
</div>
<div class="mb-3">
<div class="form-check">
<input type="checkbox" class="form-check-input" id="dropdownCheck">
<label class="form-check-label" for="dropdownCheck">
记住我
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">登录</button>
</form>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">新来者?注册</a>
<a class="dropdown-item" href="#">忘记密码?</a>
</div>
菜单对齐
默认情况下,下拉菜单是左对齐的。你可以使用对齐类来更改这一点:
右对齐菜单
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
右对齐菜单
</button>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="dropdownMenuButton">
<!-- 菜单项 -->
</ul>
</div>
响应式对齐
你也可以使对齐响应式:
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
默认左对齐但在大屏幕上右对齐
</button>
<ul class="dropdown-menu dropdown-menu-lg-end" aria-labelledby="dropdownMenuButton">
<!-- 菜单项 -->
</ul>
</div>
这个下拉菜单在默认情况下是左对齐的,但在大屏幕上会变成右对齐。
下拉菜单选项
Bootstrap下拉菜单提供了一些额外的选项:
自动关闭行为
你可以使用data-bs-auto-close
属性来控制下拉菜单的关闭方式:
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
可在外部点击
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<!-- 菜单项 -->
</ul>
</div>
data-bs-auto-close
的选项有:
-
true
(默认):点击外部或内部时关闭下拉菜单 -
false
:点击外部或内部时不会关闭下拉菜单 -
inside
:点击内部时关闭下拉菜单 -
outside
:点击外部时关闭下拉菜单
就这样!你已经完成了Bootstrap下拉菜单的快速之旅。记住,熟能生巧,所以不要害怕尝试这些示例。祝你好运,愿你的下拉菜单总是向正确的方向弹出!
Credits: Image by storyset