导航(Navs)
引导程序中提供的导航共享常规标记和样式,从基类<b-nav>
到active
和
disabled
状态。交换修改器道具以在每个样式之间切换。
概述
<b-nav>
组件是用FrasBox构建的,为构建所有类型的导航组件提供了坚实的基础。它包括一些样式替代(用于处理列表),一些较大的命中区域的链接填充,以及基本的禁用样式。基本导航中不包括任何活动状态。
<b-nav>
支持以下子组件:
<b-nav-item>
用于可操作的链接(或路由器链接)
<b-nav-item-dropdown>
下拉菜单
<b-nav-text>
用于纯文本内容
<b-nav-form>
用于内联表单
链接外观
支持两种样式变体:tabs
和
Tab 样式
通过设置tabs
属性使导航看起来像栏标。
Pill 样式
通过设置pills
属性使用pill样式。
Small
通过设置small
属性使导航更小。
填充并对齐
强制您的<b-nav>
内容扩展整个可用宽度。
填充
要使用<b-nav-item>
组件按比例填充所有可用空间,
请设置fill
属性。请注意,所有水平空间都已占用,但并非每个导航项都具有相同的宽度。
两端对齐
对于等宽元素,请改为设置justified
。所有水平空间将被导航链接占用,
但与上面的fill
不同,每个<b-nav-item>
的宽度将相同。
对齐
要对齐<b-nav-item>
组件,
请使用align
属性。
可用值包括 left
,
center
和
right
.。
垂直变化
默认情况下<b-nav>
显示在水平线上。通过设置vertical
属性堆叠导航。
下拉菜单支持
使用<b-nav-item-dropdown>
将下拉项放置在导航中。
有时,您希望将自己的类名添加到生成的下拉切换按钮中,该按钮在默认情况下具有类nav-link
和
dropdown-toggle
。使用toggle
类属性添加它们(如上所述),将生成如下内容:
有关支持的子组件的列表,请参阅<b-dropdown>
。
可选范围的默认插槽
下拉式默认插槽的作用域可以选择为以下可用的作用域:
属性或方法 |
描述 |
hide() |
可用于关闭下拉菜单。接受可选的布尔参数,如果为true ,则返回切换按钮的焦点
|
Lazy 下拉菜单
默认情况下,<b-nav-item-dropdown>
在DOM中呈现菜单内容,即使没有显示菜单。
当在同一页上呈现大量下拉列表时,由于整体内存利用率较高,性能可能会受到影响。您可以指示<b-nav-item-dropdown>
仅当通过将lazy
属性设置为true显示菜单内容时才呈现菜单内容。
导航文本内容
使用<b-nav-text>
子组件将纯文本内容放入导航:
使用<b-nav-form>
子组件将内联表单放入导航:
有关放置表单控件的其他详细信息,请参阅<b-form>
inline内联文档。
选项卡式本地内容支持
请参阅<b-tabs>
组件以创建本地内容的选项卡式窗格(不适合导航)。
Card 整合
使用<b-card>
标题中的
<b-nav>
,
启用<b-nav>
标题属性并设置pills
或
tabs
:
Tabs 样式:
With supporting text below as a natural lead-in to additional content.
Pill 样式:
With supporting text below as a natural lead-in to additional content.
Plain 样式:
只有当你使用tabs
或
pills
样式时,才需要card-header
属性。
请注意,Bootstrap v4 SCSS没有针对active
状态纯样式导航项的特殊样式。
With supporting text below as a natural lead-in to additional content.
如果 <b-nav>
处于vertical
模式,则card-header
属性没有样式效果。
与Vue路由器一起使用
让您的card通过<router-view>
或
<nuxt-child>
组件控制vue路由器嵌套路由,以创建随路由URL更改的选项卡式内容:
注意:
Vue路由器不支持使用哈希(#
)定义活动路由,因此必须将“tab”内容定义为子路由。
上面的路由器配置示例:
也可以使用named routes和/或route params的Vue路由器,而不是基于路径的路由。
有关详细信息,请参见:
可访问性
如果使用<b-nav>
提供导航栏,
请确保将role="navigation"
添加到<b-nav>
的最合乎逻辑的父容器中,
或在<b-nav>
周围包装一个<nav>
元素。
不要将角色添加到<b-nav>
本身,因为这会阻止辅助技术将其作为实际列表公布。
在<b-nav>
中使用<b-nav-item-dropdown>
时,
请确保为<b-nav-dropdown>
指定唯一的id
属性值,
以便自动生成相应的aria-*
属性。
选项卡式界面可访问性
请注意,导航栏,即使视觉样式为制表符,也不应赋予role="tablist"
,
role="tab"
或
role="tabpanel"
属性。
这些仅适用于不更改URL或$route
的
选项卡式接口,
如WAI ARIA创作实践中所述。有关与WAI ARIA兼容的动态选项卡式接口,
请参见<b-tabs>
。
选项卡式界面应避免使用下拉菜单,因为这会导致可用性和可访问性问题:
- 从可用性的角度来看,当前显示的选项卡的触发器元素不立即可见(因为它在关闭的下拉菜单中)这一事实可能会导致混淆。
- 从可访问性的角度来看,目前还没有合理的方法将这种构造映射到标准的WAI ARIA模式,这意味着辅助技术的用户无法轻松地理解它。
另请参阅
组件引用
属性
属性 |
类型 |
默认值 |
描述 |
tag |
String |
'ul' |
指定要呈现的HTML标记,而不是默认标记 |
fill |
Boolean |
false |
按比例用导航项填充所有水平空间。所有水平空间都被占用,但不是每个导航项都有相同的宽度 |
justified |
Boolean |
false |
用导航项填充所有水平空间,但与“填充”不同,每个导航项的宽度都相同 |
align |
String |
|
对齐导航中的导航项:“开始”(或“左”)、“中心”、“结束”(或“右”) |
tabs |
Boolean |
false |
以选项卡的外观呈现导航项 |
pills |
Boolean |
false |
以pill按钮的外观呈现导航项 |
vertical |
Boolean |
false |
垂直渲染导航 |
small |
Boolean |
false |
使导航更小 |
属性
属性 (Click to sort Ascending) |
类型 |
默认值 |
描述 |
href |
String |
|
表示标准a链接的链接的目标URL |
rel |
String |
|
设置呈现链接的“rel”属性 |
target |
String |
'_self' |
设置呈现链接的“target”属性 |
active |
Boolean |
false |
当设置为“true”时,使用活动样式将组件置于活动状态 |
disabled |
Boolean |
false |
设置为“true”时,禁用组件的功能并将其置于禁用状态 |
to |
String or Object |
|
路由器链接属性:表示链接的目标路由。单击时,to prop的值将在内部传递给router.push(),因此该值可以是字符串或位置描述符对象 |
append |
Boolean |
false |
路由器链接属性:设置附加属性总是将相对路径附加到当前路径 |
replace |
Boolean |
false |
路由器链接属性:设置替换属性将在单击时调用“router.replace()”,而不是“router.push()”,因此导航不会留下历史记录 |
event |
String or Array |
'click' |
路由器链接属性:指定触发链接的事件。在大多数情况下,您应该将其保留为默认值 |
active-class |
String |
|
路由器链接属性:配置当链接处于活动状态时应用的活动CSS类。通常您需要将其设置为类名“active” |
exact |
Boolean |
false |
路由器链接属性:默认的活动类匹配行为是包含匹配。设置此道具将强制模式与路线完全匹配 |
exact-active-class |
String |
|
路由器链接属性:配置当链接处于活动状态时应用的活动CSS类,精确匹配。通常您需要将其设置为类名“active” |
router-tag |
String |
'a' |
路由器链接属性:指定要呈现的标记,它仍将侦听用于导航的单击事件“路由器标记”转换为最终呈现路由器链接上的标记属性。通常应该使用默认值 |
no-prefetch |
Boolean |
false |
nuxt link prop:为了提高nuxt.js应用程序的响应性,当链接显示在视区内时,nuxt.js将自动预取代码分割的页面。设置“无预取”将禁用特定链接的此功能 |
link-attrs |
Object |
|
要放置在嵌套链接元素上的其他属性 |
link-classes |
String or Object or Array |
|
放置在嵌套链接元素上的CSS类 |
<b-nav-item>
支持生成
<router-link>
或
<nuxt-link>
组件(如果使用nuxt.js)。
有关路由器链接(或nuxt链接)特定属性的更多详细信息,请参阅路由器支持 参考部分。
属性 |
类型 |
默认值 |
描述 |
id |
String |
|
用于在渲染的内容上设置“id”属性,并用作根据需要生成任何其他元素ID的基础 |
novalidate |
Boolean |
false |
设置后,禁用窗体中控件的浏览器本机HTML5验证 |
validated |
Boolean |
false |
设置后,在窗体上添加引导类“was validated”,触发本机浏览器验证状态 |
form-class |
String or Array or Object |
|
|
事件 |
参数 |
描述 |
submit |
event - Native submit event.
|
提交表单时发出 |
组件别名
<b-nav-item-dropdown>
也可以通过以下别名使用:
<b-nav-item-dd>
<b-nav-dropdown>
<b-nav-dd>
注意:组件别名仅在导入所有 BootstrapVue 或使用组件组插件时可用。
属性
属性 (Click to sort Ascending) |
类型 |
默认值 |
描述 |
id |
String |
|
用于在渲染的内容上设置“id”属性,并用作根据需要生成任何其他元素ID的基础 |
disabled |
Boolean |
false |
设置为“true”时,禁用组件的功能并将其置于禁用状态 |
dropup |
Boolean |
false |
设置后,将菜单放置在按钮顶部 |
dropright |
Boolean |
false |
设置后,将菜单放置在按钮右侧 |
dropleft |
Boolean |
false |
设置后,将菜单放置在按钮左侧 |
right |
Boolean |
false |
将菜单的右边缘与按钮的右对齐 |
offset |
Number or String |
0 |
|
no-flip |
Boolean |
false |
防止菜单自动翻转位置 |
popper-opts |
Any |
|
要传递给Popper.js的附加配置 |
boundary v2.4.0+ |
String or HTMLElement |
'scrollParent' |
菜单的边界约束:“scrollParent”、“window”、“viewport”或对HTMLElement的引用。当下拉菜单位于b-navbar中时不起作用 |
text |
String |
|
在切换按钮或拆分按钮中放置的文本为拆分模式 |
html |
String |
|
HTML字符串放置在切换按钮中,或在拆分按钮中是拆分模式。慎用 |
toggle-class |
String or Array or Object |
|
要添加到切换按钮的CSS类 |
no-caret |
Boolean |
false |
隐藏切换按钮上的插入符号指示器 |
role |
String |
'menu' |
将ARIA属性“role”设置为特定值 |
lazy |
Boolean |
false |
设置后,将只在菜单打开时将菜单内容装载到DOM中 |
插槽
插槽名称 |
描述 |
范围 |
button-content |
可用于实现具有图标和更多样式的自定义文本。 |
|
default |
下拉菜单内容的可选范围的默认槽。 |
|
事件
事件 |
参数 |
描述 |
show |
bvEvt - BvEvent对象。调用bvEvt.preventDefault()取消显示。
|
在显示下拉列表之前发出。可取消。 |
shown |
|
显示下拉列表时发出。 |
hide |
bvEvt - BvEvent对象。调用bvEvt.preventDefault()取消隐藏。
|
在隐藏下拉列表之前发出。可取消。 |
hidden |
|
隐藏下拉列表时发出。 |
toggle |
|
单击切换按钮时发出。 |
导入单个组件
您可以通过以下命名的导出将单个组件导入到项目中:
组件 |
命名输出 |
导入路径 |
<b-nav> |
BNav |
bootstrap-vue |
<b-nav-item> |
BNavItem |
bootstrap-vue |
<b-nav-text> |
BNavText |
bootstrap-vue |
<b-nav-form> |
BNavForm |
bootstrap-vue |
<b-nav-item-dropdown> |
BNavItemDropdown |
bootstrap-vue |
示例:
导入为Vue.js插件
该插件包括上面列出的所有单个组件。插件还包括任何组件别名。
命名输出 |
导入路径 |
NavPlugin |
bootstrap-vue |
此插件还自动包含以下插件:
示例: