Bootstrap系列之下拉菜单(Dropdowns)


使用Bootstrap下拉插件切换上下文覆盖来显示链接列表和更多内容。

1、概述

下拉列表是可切换的,上下文覆盖显示链接列表和更多。它们与包含的Bootstrap下拉式JavaScript插件进行交互。它们是通过点击而不是悬停来切换的;这是一个有意的设计决策。

下拉框建立在第三方库Popper上,它提供动态定位和视口检测。请确保在Bootstrap JavaScript之前包含popper. min.js或使用包含Popper的bootstrap .bundle.min.js / bootstrap .bundle.js。Popper不用于定位导航栏中的下拉框,因为动态定位不是必需的。

如果您从源代码构建我们的JavaScript,它需要util.js

2、可及性

WAI ARIA标准定义了一个实际的role="menu"小部件,但这只针对于触发操作或功能的类似于应用程序的菜单。ARIA菜单只能包含菜单项、复选框菜单项、单选按钮菜单项、单选按钮组和子菜单。

另一方面,引导下拉列表被设计成通用的,适用于各种情况和标记结构。例如,可以创建包含额外输入和表单控件(如搜索字段或登录表单)的下拉列表。由于这个原因,Bootstrap不期望(也不会自动添加)真正aria菜单所需的任何角色和aria-属性。作者自己必须包含这些更具体的属性。

然而,Bootstrap确实增加了对大多数标准键盘菜单交互的内置支持,例如使用光标键在单个的.dropdown-item之间移动和用ESC键关闭菜单的能力。

3、示例

将下拉按钮(您的按钮或链接)和下拉菜单包装在.dropdown中,或者另一个声明position: relative;的元素,下拉框可以从<a><button>元素触发,以更好地满足您的潜在需求。

3.1、Single button

任何单个.btn都可以通过一些标记更改转换为下拉选项。以下是使用<button>元素使它们工作的方法

<div class="dropdown">
  <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-expanded="false">
    Dropdown button
  </button>
  <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
    <a class="dropdown-item" href="#">Action</a>
    <a class="dropdown-item" href="#">Another action</a>
    <a class="dropdown-item" href="#">Something else here</a>
  </div>
</div>

在这里插入图片描述

并且使用<a>元素

<div class="dropdown">
  <a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-expanded="false">
    Dropdown link
  </a>

  <div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
    <a class="dropdown-item" href="#">Action</a>
    <a class="dropdown-item" href="#">Another action</a>
    <a class="dropdown-item" href="#">Something else here</a>
  </div>
</div>

在这里插入图片描述
最棒的是,你也可以用任何按钮变体来实现这一点

<!-- Example single danger button -->
<div class="btn-group">
  <button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
    Action
  </button>
  <div class="dropdown-menu">
    <a class="dropdown-item" href="#">Action</a>
    <a class="dropdown-item" href="#">Another action</a>
    <a class="dropdown-item" href="#">Something else here</a>
    <div class="dropdown-divider"></div>
    <a class="dropdown-item" href="#">Separated link</a>
  </div>
</div>

在这里插入图片描述

3.2、Split button

类似地,创建拆分按钮下拉列表,其标记与单个按钮下拉列表几乎相同,但添加了.dropdown-toggle-split,以便在下拉插入符号周围留出适当的间距。

我们使用这个额外的类来将插入符号两边的水平填充减少25%,并删除为常规按钮下拉列表添加的左边距。这些额外的更改使插入符号保持在拆分按钮的中心,并在主按钮旁边提供一个大小更合适的点击区域。

<!-- Example split danger button -->
<div class="btn-group">
  <button type="button" class="btn btn-danger">Action</button>
  <button type="button" class="btn btn-danger dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-expanded="false">
    <span class="sr-only">Toggle Dropdown</span>
  </button>
  <div class="dropdown-menu">
    <a class="dropdown-item" href="#">Action</a>
    <a class="dropdown-item" href="#">Another action</a>
    <a class="dropdown-item" href="#">Something else here</a>
    <div class="dropdown-divider"></div>
    <a class="dropdown-item" href="#">Separated link</a>
  </div>
</div>

在这里插入图片描述

4、Sizing

按钮下拉工作与所有大小的按钮,包括默认和拆分下拉按钮。

<!-- Large button groups (default and split) -->
<div class="btn-group">
  <button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-toggle="dropdown" aria-expanded="false">
    Large button
  </button>
  <div class="dropdown-menu">
    ...
  </div>
</div>
<div class="btn-group">
  <button class="btn btn-secondary btn-lg" type="button">
    Large split button
  </button>
  <button type="button" class="btn btn-lg btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-expanded="false">
    <span class="sr-only">Toggle Dropdown</span>
  </button>
  <div class="dropdown-menu">
    ...
  </div>
</div>

在这里插入图片描述

<!-- Small button groups (default and split) -->
<div class="btn-group">
  <button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-toggle="dropdown" aria-expanded="false">
    Small button
  </button>
  <div class="dropdown-menu">
    ...
  </div>
</div>
<div class="btn-group">
  <button class="btn btn-secondary btn-sm" type="button">
    Small split button
  </button>
  <button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-expanded="false">
    <span class="sr-only">Toggle Dropdown</span>
  </button>
  <div class="dropdown-menu">
    ...
  </div>
</div>

在这里插入图片描述

5、Directions

5.1、上拉菜单

通过向父元素添加.droppup来触发元素上方的下拉菜单。

<!-- Default dropup button -->
<div class="btn-group dropup">
  <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
    Dropup
  </button>
  <div class="dropdown-menu">
    <!-- Dropdown menu links -->
  </div>
</div>

<!-- Split dropup button -->
<div class="btn-group dropup">
  <button type="button" class="btn btn-secondary">
    Split dropup
  </button>
  <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-expanded="false">
    <span class="sr-only">Toggle Dropdown</span>
  </button>
  <div class="dropdown-menu">
    <!-- Dropdown menu links -->
  </div>
</div>

在这里插入图片描述

5.2、右拉菜单

通过向父元素添加.dropright来触发元素右侧的下拉菜单。

<!-- Default dropright button -->
<div class="btn-group dropright">
  <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
    Dropright
  </button>
  <div class="dropdown-menu">
    <!-- Dropdown menu links -->
  </div>
</div>

<!-- Split dropright button -->
<div class="btn-group dropright">
  <button type="button" class="btn btn-secondary">
    Split dropright
  </button>
  <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-expanded="false">
    <span class="sr-only">Toggle Dropright</span>
  </button>
  <div class="dropdown-menu">
    <!-- Dropdown menu links -->
  </div>
</div>

在这里插入图片描述

5.3、左拉菜单

通过在父元素中添加.dropleft来触发元素左侧的下拉菜单。

<!-- Default dropleft button -->
<div class="btn-group dropleft">
  <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
    Dropleft
  </button>
  <div class="dropdown-menu">
    <!-- Dropdown menu links -->
  </div>
</div>

<!-- Split dropleft button -->
<div class="btn-group">
  <div class="btn-group dropleft" role="group">
    <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-expanded="false">
      <span class="sr-only">Toggle Dropleft</span>
    </button>
    <div class="dropdown-menu">
      <!-- Dropdown menu links -->
    </div>
  </div>
  <button type="button" class="btn btn-secondary">
    Split dropleft
  </button>
</div>

在这里插入图片描述

6、菜单项

历史上,下拉菜单内容必须是链接,但v4不再是这样。现在,您可以在下拉列表中选择使用<button>元素,而不仅仅是<a>

<div class="dropdown">
  <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenu2" data-toggle="dropdown" aria-expanded="false">
    Dropdown
  </button>
  <div class="dropdown-menu" aria-labelledby="dropdownMenu2">
    <button class="dropdown-item" type="button">Action</button>
    <button class="dropdown-item" type="button">Another action</button>
    <button class="dropdown-item" type="button">Something else here</button>
  </div>
</div>

在这里插入图片描述
您还可以使用.dropdown-item-text创建非交互式下拉项。您可以随意使用自定义CSS或文本实用程序进一步设计样式。

<div class="dropdown-menu">
  <span class="dropdown-item-text">Dropdown item text</span>
  <a class="dropdown-item" href="#">Action</a>
  <a class="dropdown-item" href="#">Another action</a>
  <a class="dropdown-item" href="#">Something else here</a>
</div>

在这里插入图片描述

6.1、Active

.active添加到下拉列表项中,使其样式为活动。

<div class="dropdown-menu">
  <a class="dropdown-item" href="#">Regular link</a>
  <a class="dropdown-item active" href="#">Active link</a>
  <a class="dropdown-item" href="#">Another link</a>
</div>

在这里插入图片描述

6.2、Disabled

在下拉列表中添加.disabled,将它们样式为disabled。

<div class="dropdown-menu">
  <a class="dropdown-item" href="#">Regular link</a>
  <a class="dropdown-item disabled">Disabled link</a>
  <a class="dropdown-item" href="#">Another link</a>
</div>

在这里插入图片描述

7、菜单对齐方式

默认情况下,下拉菜单会自动定位在其父菜单的左侧和顶部。添加.dropdown-menu-right.dropdown-menu来右对齐下拉菜单。

<div class="btn-group">
  <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
    Right-aligned menu
  </button>
  <div class="dropdown-menu dropdown-menu-right">
    <button class="dropdown-item" type="button">Action</button>
    <button class="dropdown-item" type="button">Another action</button>
    <button class="dropdown-item" type="button">Something else here</button>
  </div>
</div>

在这里插入图片描述

7.1、响应式对齐

如果您想使用响应式对齐,可以通过添加data-display="static"属性禁用动态定位,并使用响应式变体类。

要将下拉菜单与给定的断点或更大的断点右对齐,请添加.dropdown-menu{-sm|-md|-lg|-xl}-right

<div class="btn-group">
  <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" data-display="static" aria-expanded="false">
    Left-aligned but right aligned when large screen
  </button>
  <div class="dropdown-menu dropdown-menu-lg-right">
    <button class="dropdown-item" type="button">Action</button>
    <button class="dropdown-item" type="button">Another action</button>
    <button class="dropdown-item" type="button">Something else here</button>
  </div>
</div>

在这里插入图片描述
要使下拉菜单的左边与给定的断点或更大的断点对齐,请添加.dropdown-menu-right和.dropdown-menu{-sm|-md|-lg|-xl}-left

<div class="btn-group">
  <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" data-display="static" aria-expanded="false">
    Right-aligned but left aligned when large screen
  </button>
  <div class="dropdown-menu dropdown-menu-right dropdown-menu-lg-left">
    <button class="dropdown-item" type="button">Action</button>
    <button class="dropdown-item" type="button">Another action</button>
    <button class="dropdown-item" type="button">Something else here</button>
  </div>
</div>

在这里插入图片描述
注意,你不需要在导航栏的下拉按钮中添加data-display="static"属性,因为导航栏中不使用Popper。

8、菜单内容

8.1、头部

在任意下拉菜单中为动作部分添加标题。

<div class="dropdown-menu">
  <h6 class="dropdown-header">Dropdown header</h6>
  <a class="dropdown-item" href="#">Action</a>
  <a class="dropdown-item" href="#">Another action</a>
</div>

在这里插入图片描述

8.2、分隔符

用分隔符将相关的菜单项分开。

<div class="dropdown-menu">
  <a class="dropdown-item" href="#">Action</a>
  <a class="dropdown-item" href="#">Another action</a>
  <a class="dropdown-item" href="#">Something else here</a>
  <div class="dropdown-divider"></div>
  <a class="dropdown-item" href="#">Separated link</a>
</div>

在这里插入图片描述

8.3、正文

放置任何自由文本下拉菜单中的文本和使用间距实用工具。请注意,您可能需要额外的大小样式来约束菜单宽度。

<div class="dropdown-menu p-4 text-muted" style="max-width: 200px;">
  <p>
    Some example text that's free-flowing within the dropdown menu.
  </p>
  <p class="mb-0">
    And this is more example text.
  </p>
</div>

在这里插入图片描述

8.4、表单

在下拉菜单中添加一个表单,或者将其变成下拉菜单,然后使用边距或填充工具为其提供所需的负空间。

<div class="dropdown-menu">
  <form class="px-4 py-3">
    <div class="form-group">
      <label for="exampleDropdownFormEmail1">Email address</label>
      <input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="email@example.com">
    </div>
    <div class="form-group">
      <label for="exampleDropdownFormPassword1">Password</label>
      <input type="password" class="form-control" id="exampleDropdownFormPassword1" placeholder="Password">
    </div>
    <div class="form-group">
      <div class="form-check">
        <input type="checkbox" class="form-check-input" id="dropdownCheck">
        <label class="form-check-label" for="dropdownCheck">
          Remember me
        </label>
      </div>
    </div>
    <button type="submit" class="btn btn-primary">Sign in</button>
  </form>
  <div class="dropdown-divider"></div>
  <a class="dropdown-item" href="#">New around here? Sign up</a>
  <a class="dropdown-item" href="#">Forgot password?</a>
</div>

在这里插入图片描述

<form class="dropdown-menu p-4">
  <div class="form-group">
    <label for="exampleDropdownFormEmail2">Email address</label>
    <input type="email" class="form-control" id="exampleDropdownFormEmail2" placeholder="email@example.com">
  </div>
  <div class="form-group">
    <label for="exampleDropdownFormPassword2">Password</label>
    <input type="password" class="form-control" id="exampleDropdownFormPassword2" placeholder="Password">
  </div>
  <div class="form-group">
    <div class="form-check">
      <input type="checkbox" class="form-check-input" id="dropdownCheck2">
      <label class="form-check-label" for="dropdownCheck2">
        Remember me
      </label>
    </div>
  </div>
  <button type="submit" class="btn btn-primary">Sign in</button>
</form>

在这里插入图片描述

9、下拉选项

使用data-offsetdata-reference来更改下拉菜单的位置。

<div class="d-flex">
  <div class="dropdown mr-1">
    <button type="button" class="btn btn-secondary dropdown-toggle" id="dropdownMenuOffset" data-toggle="dropdown" aria-expanded="false" data-offset="10,20">
      Offset
    </button>
    <div class="dropdown-menu" aria-labelledby="dropdownMenuOffset">
      <a class="dropdown-item" href="#">Action</a>
      <a class="dropdown-item" href="#">Another action</a>
      <a class="dropdown-item" href="#">Something else here</a>
    </div>
  </div>
  <div class="btn-group">
    <button type="button" class="btn btn-secondary">Reference</button>
    <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" id="dropdownMenuReference" data-toggle="dropdown" aria-expanded="false" data-reference="parent">
      <span class="sr-only">Toggle Dropdown</span>
    </button>
    <div class="dropdown-menu" aria-labelledby="dropdownMenuReference">
      <a class="dropdown-item" href="#">Action</a>
      <a class="dropdown-item" href="#">Another action</a>
      <a class="dropdown-item" href="#">Something else here</a>
      <div class="dropdown-divider"></div>
      <a class="dropdown-item" href="#">Separated link</a>
    </div>
  </div>
</div>

在这里插入图片描述

10、用法

通过数据属性或JavaScript,下拉插件通过切换父组件.dropdown-menu上的.show类来切换隐藏的内容(下拉菜单)。data-toggle="dropdown"属性在应用程序级别用于关闭下拉菜单,因此始终使用它是一个好主意。

在支持触摸的设备上,打开下拉菜单会向<body>元素的直接子元素添加空($.noop)鼠标悬停处理程序。这个丑陋的hack是必要的,以解决iOS事件委托的一个怪癖,否则将阻止任何地方以外的下拉菜单触发关闭下拉菜单的代码。一旦关闭下拉菜单,这些额外的空鼠标悬停处理程序将被删除。

10.1、通过data属性

添加data-toggle="dropdown"到链接或按钮,以切换下拉菜单。

<div class="dropdown">
  <button id="dLabel" type="button" data-toggle="dropdown" aria-expanded="false">
    Dropdown trigger
  </button>
  <div class="dropdown-menu" aria-labelledby="dLabel">
    ...
  </div>
</div>

10.2、通过JavaScript

通过JavaScript调用下拉列表

$('.dropdown-toggle').dropdown()

data-toggle="dropdown"仍然需要
无论你是通过JavaScript调用还是使用data-api, data-toggle="dropdown"总是需要出现在下拉列表的触发器元素上。

10.3、选项

选项可以通过数据属性或JavaScript传递。对于数据属性,将选项名称附加到data-,如data-offset=""

在这里插入图片描述
注意,当boundary被设置为’scrollParent’以外的任何值时,样式position: static将应用于.dropdown容器。

10.4、方法

在这里插入图片描述

10.5、事件

所有下拉事件都是在.dropdown-menu的父元素上触发的,并且有一个relatedTarget属性,其值是切换锚元素。hide.bs.dropdownhidden.bs.dropdown事件有一个clickEvent属性(仅当原始事件类型为click时),其中包含一个click事件的事件对象。

在这里插入图片描述

$('#myDropdown').on('show.bs.dropdown', function () {
  // do something...
})

写在最后

如果你感觉文章不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※!!!

  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Bootstrap是一个流行的前端开发框架,可以用于快速搭建响应式网站或后台系统。其中一个常用的组件是垂直导航菜单,通常用于显示系统的各种功能和页面。一个典型的bootstrap后台系统垂直导航菜单包含以下特点: 首先,菜单应该占据整个页面的左侧或右侧,可以通过一些bootstrap类来控制菜单的宽度和位置。菜单可以是固定的(即不随滚动条移动)或是跟随页面滚动。在移动设备上,菜单可以被折叠成一个按钮,点击后展开菜单,这个功能可以通过bootstrap的collapse插件实现。 其次,菜单应该有多级结构,即每个菜单项可以有子菜单,这可以通过bootstrapdropdown组件实现。子菜单可以在父菜单项的右侧或下方弹出展示,具体的位置可以根据实际需求来调整。 第三,菜单项一般都需要有一个图标和一个文本描述,用来方便用户理解和快速定位。bootstrap提供了很多图标和字体库供开发者使用,可以通过在菜单项中添加相应的类来实现。 最后,菜单可以根据用户的登录状态或权限来动态加载不同的菜单项或子菜单,从而提供个性化的功能和体验。这可以通过后台服务来实现,具体的技术方案需要根据实际情况来选择。 总之,一个好的bootstrap后台系统垂直导航菜单应该具有清晰的结构、友好的交互和个性化的功能。开发者需要根据实际需求和用户反馈来不断优化和改进菜单的设计和实现。 ### 回答2: 随着互联网技术的不断发展,越来越多的企业开始积极推进数字化转型,其中企业后台管理系统的建设便成为了数字化转型的重要环节之一。而bootstrap后台系统垂直导航菜单则是建设高效便捷的后台系统不可或缺的组成部分之一。 Bootstrap是一种受欢迎的前端开发框架,它的设计风格简洁明了,布局简单、直观,可适用于各种规模的应用系统。而垂直导航菜单则是常见的后台系统导航方式,它以便捷的导航方式,方便用户快速进入后台系统的各个板块。 在bootstrap后台系统中,使用垂直导航菜单是一种最为常见的设计方式。垂直导航菜单以树形结构呈现,清晰明了地展示了后台系统的各个版块,让用户能够快速的找到需要的功能所在。同时,在搜索引擎优化方面,对于有多个页面的后台系统,使用垂直导航菜单也方便搜索引擎的爬取和抓取。 除此之外,bootstrap后台系统中的垂直导航菜单还可有以下功能: 1、隐藏功能:在一些后台管理系统中,用户权限是不同的,垂直导航菜单可以根据用户的权限设置显示或隐藏某些功能,保证了信息的安全性。 2、折叠功能:当后台系统中的版块过多时,垂直导航菜单可以折叠展示,有效节省了页面的空间,让页面看起来更加美观自然。同时,当需要选择某个板块时,用户也可以点击相应的板块进行展开。 3、响应式设计:bootstrap后台系统中的垂直导航菜单也考虑到了移动设备的适配问题,支持响应式设计,用户可以在PC端和移动设备端进行快速导航。 总之,bootstrap后台系统垂直导航菜单是一种非常重要的设计方式,通过它可以提高后台系统的使用便捷性和用户体验,同时也体现了系统设计的高效性和专业性。 ### 回答3: Bootstrap是一种流行的前端开发框架,主要用于快速而高效地创建响应式和美观的网站。在使用Bootstrap开发后台系统时,垂直导航菜单是不可或缺的一个组件。 垂直导航菜单通常位于页面的左侧或右侧,可以帮助用户方便地浏览和访问系统的不同模块和功能。Bootstrap提供了一些内置的组件和样式,使得创建和定制垂直导航菜单变得非常容易。 首先,在Bootstrap中创建垂直导航菜单需要使用nav组件。nav组件中有两种类型的导航菜单:基本导航和响应式导航。基本导航菜单是常规的菜单栏,而响应式导航菜单是在小屏幕上折叠显示的菜单。 其次,Bootstrap中提供了许多样式和组件,可以轻松定制导航菜单的外观和功能。例如,可以使用font-awesome图标来添加菜单项的图标,使用dropdown组件来创建下拉菜单,使用badge组件来显示未读消息数量等等。 最后,如果需要实现更高级的功能,如菜单项的激活状态和展开状态等,可以使用JavaScript代码来实现。BootstrapJavaScript库中提供了一些方便的函数和方法,来实现这些高级功能。 总的来说,Bootstrap后台系统垂直导航菜单是一个非常实用且易于定制的组件,可以帮助你创建一个高效且用户友好的后台系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老__L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值