后浪云Bootstrap5教程:Bootstrap5 侧边栏导航(Offcanvas)
Bootstrap5 侧边栏导航(Offcanvas)
Bootstrap5 侧边栏侧边栏类似于模态框,在移动端设备中比较常用。
创建滑动导航
我们可以通过 JavaScript 来设置是否在 .offcanvas
类后面添加 .show
类,从而控制侧边栏的显示与隐藏:
.offcanvas
隐藏内容 (默认).offcanvas.show
显示内容
可以使用 a 链接的 href
属性或者 button 元素使用 data-bs-target
属性来设置侧边栏。这两种情况都需要使用 data-bs-toggle="offcanvas"
。
创建滑动导航实例如下:
实例
<
a
class
=
"
btn btn-primary
"
data-bs-toggle
=
"
offcanvas
"
href
=
"
#offcanvasExample
"
role
=
"
button
"
aria-controls
=
"
offcanvasExample
"
>
使用链接的 href 属性
</
a
>
<
button
class
=
"
btn btn-primary
"
type
=
"
button
"
data-bs-toggle
=
"
offcanvas
"
data-bs-target
=
"
#offcanvasExample
"
aria-controls
=
"
offcanvasExample
"
>
按钮中使用 data-bs-target
</
button
>
<
div
class
=
"
offcanvas offcanvas-start
"
tabindex
=
"
-1
"
id
=
"
offcanvasExample
"
aria-labelledby
=
"
offcanvasExampleLabel
"
>
<
div
class
=
"
offcanvas-header
"
>
<
h5
class
=
"
offcanvas-title
"
id
=
"
offcanvasExampleLabel
"
>
侧边栏
</
h5
>
<
button
type
=
"
button
"
class
=
"
btn-close text-reset
"
data-bs-dismiss
=
"
offcanvas
"
aria-label
=
"
Close
"
>
</
button
>
</
div
>
<
div
class
=
"
offcanvas-body
"
>
<
div
>
Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.
</
div
>
<
div
class
=
"
dropdown mt-3
"
>
<
button
class
=
"
btn btn-secondary dropdown-toggle
"
type
=
"
button
"
id
=
"
dropdownMenuButton
"
data-bs-toggle
=
"
dropdown
"
>
Dropdown button
</
button
>
<
ul
class
=
"
dropdown-menu
"
aria-labelledby
=
"
dropdownMenuButton
"
>
<
li
>
<
a
class
=
"
dropdown-item
"
href
=
"
#
"
>
Action
</
a
>
</
li
>
<
li
>
<
a
class
=
"
dropdown-item
"
href
=
"
#
"
>
Another action
</
a
>
</
li
>
<
li
>
<
a
class
=
"
dropdown-item
"
href
=
"
#
"
>
Something else here
</
a
>
</
li
>
</
ul
>
</
div
>
</
div
>
</
div
>
尝试一下 »
侧边栏的方向
可以通过以下四个类来控制侧边栏的方向:
.offcanvas-start
显示在左侧,如上实例。.offcanvas-end
显示在右侧.offcanvas-top
显示在顶部.offcanvas-bottom
显示在底部
实例
<
button
class
=
"
btn btn-primary
"
type
=
"
button
"
data-bs-toggle
=
"
offcanvas
"
data-bs-target
=
"
#offcanvasTop
"
aria-controls
=
"
offcanvasTop
"
>
顶部导航栏
</
button
>
<
div
class
=
"
offcanvas offcanvas-top
"
tabindex
=
"
-1
"
id
=
"
offcanvasTop
"
aria-labelledby
=
"
offcanvasTopLabel
"
>
<
div
class
=
"
offcanvas-header
"
>
<
h5
id
=
"
offcanvasTopLabel
"
>
显示在顶部导航栏
</
h5
>
<
button
type
=
"
button
"
class
=
"
btn-close text-reset
"
data-bs-dismiss
=
"
offcanvas
"
aria-label
=
"
Close
"
>
</
button
>
</
div
>
<
div
class
=
"
offcanvas-body
"
>
...
</
div
>
</
div
>
尝试一下 »
实例
<
button
class
=
"
btn btn-primary
"
type
=
"
button
"
data-bs-toggle
=
"
offcanvas
"
data-bs-target
=
"
#offcanvasRight
"
aria-controls
=
"
offcanvasRight
"
>
右侧侧边栏
</
button
>
<
div
class
=
"
offcanvas offcanvas-end
"
tabindex
=
"
-1
"
id
=
"
offcanvasRight
"
aria-labelledby
=
"
offcanvasRightLabel
"
>
<
div
class
=
"
offcanvas-header
"
>
<
h5
id
=
"
offcanvasRightLabel
"
>
显示在右侧侧边栏
</
h5
>
<
button
type
=
"
button
"
class
=
"
btn-close text-reset
"
data-bs-dismiss
=
"
offcanvas
"
aria-label
=
"
Close
"
>
</
button
>
</
div
>
<
div
class
=
"
offcanvas-body
"
>
...
</
div
>
</
div
>
尝试一下 »
实例
<
button
class
=
"
btn btn-primary
"
type
=
"
button
"
data-bs-toggle
=
"
offcanvas
"
data-bs-target
=
"
#offcanvasBottom
"
aria-controls
=
"
offcanvasBottom
"
>
底部导航栏
</
button
>
<
div
class
=
"
offcanvas offcanvas-bottom
"
tabindex
=
"
-1
"
id
=
"
offcanvasBottom
"
aria-labelledby
=
"
offcanvasBottomLabel
"
>
<
div
class
=
"
offcanvas-header
"
>
<
h5
class
=
"
offcanvas-title
"
id
=
"
offcanvasBottomLabel
"
>
显示在底部导航栏
</
h5
>
<
button
type
=
"
button
"
class
=
"
btn-close text-reset
"
data-bs-dismiss
=
"
offcanvas
"
aria-label
=
"
Close
"
>
</
button
>
</
div
>
<
div
class
=
"
offcanvas-body small
"
>
...
</
div
>
</
div
>
尝试一下 »
设置背景及背景是否可滚动
我们可以在弹出侧边栏的时候设置 <body>
元素是否可以滚动,也可以设置是否显示一个背景画布。 使用 data-bs-scroll
属性来设置 <body>
元素是否可滚动,data-bs-backdrop
来切换是否显示背景画布。
实例
<
button
class
=
"
btn btn-primary
"
type
=
"
button
"
data-bs-toggle
=
"
offcanvas
"
data-bs-target
=
"
#offcanvasScrolling
"
aria-controls
=
"
offcanvasScrolling
"
>
body 元素可以滚动
</
button
>
<
button
class
=
"
btn btn-primary
"
type
=
"
button
"
data-bs-toggle
=
"
offcanvas
"
data-bs-target
=
"
#offcanvasWithBackdrop
"
aria-controls
=
"
offcanvasWithBackdrop
"
>
显示画布(默认)
</
button
>
<
button
class
=
"
btn btn-primary
"
type
=
"
button
"
data-bs-toggle
=
"
offcanvas
"
data-bs-target
=
"
#offcanvasWithBothOptions
"
aria-controls
=
"
offcanvasWithBothOptions
"
>
允许滚动及显示画布
</
button
>
<
div
class
=
"
offcanvas offcanvas-start
"
data-bs-scroll
=
"
true
"
data-bs-backdrop
=
"
false
"
tabindex
=
"
-1
"
id
=
"
offcanvasScrolling
"
aria-labelledby
=
"
offcanvasScrollingLabel
"
>
<
div
class
=
"
offcanvas-header
"
>
<
h5
class
=
"
offcanvas-title
"
id
=
"
offcanvasScrollingLabel
"
>
正文内容可以滚动
</
h5
>
<
button
type
=
"
button
"
class
=
"
btn-close text-reset
"
data-bs-dismiss
=
"
offcanvas
"
aria-label
=
"
Close
"
>
</
button
>
</
div
>
<
div
class
=
"
offcanvas-body
"
>
<
p
>
滚动页面查看效果。
</
p
>
</
div
>
</
div
>
<
div
class
=
"
offcanvas offcanvas-start
"
tabindex
=
"
-1
"
id
=
"
offcanvasWithBackdrop
"
aria-labelledby
=
"
offcanvasWithBackdropLabel
"
>
<
div
class
=
"
offcanvas-header
"
>
<
h5
class
=
"
offcanvas-title
"
id
=
"
offcanvasWithBackdropLabel
"
>
使用背景画布
</
h5
>
<
button
type
=
"
button
"
class
=
"
btn-close text-reset
"
data-bs-dismiss
=
"
offcanvas
"
aria-label
=
"
Close
"
>
</
button
>
</
div
>
<
div
class
=
"
offcanvas-body
"
>
<
p
>
正文内容不可滚动
</
p
>
</
div
>
</
div
>
<
div
class
=
"
offcanvas offcanvas-start
"
data-bs-scroll
=
"
true
"
tabindex
=
"
-1
"
id
=
"
offcanvasWithBothOptions
"
aria-labelledby
=
"
offcanvasWithBothOptionsLabel
"
>
<
div
class
=
"
offcanvas-header
"
>
<
h5
class
=
"
offcanvas-title
"
id
=
"
offcanvasWithBothOptionsLabel
"
>
使用背景画布,正文内容可滚动
</
h5
>
<
button
type
=
"
button
"
class
=
"
btn-close text-reset
"
data-bs-dismiss
=
"
offcanvas
"
aria-label
=
"
Close
"
>
</
button
>
</
div
>
<
div
class
=
"
offcanvas-body
"
>
<
p
>
滚动页面查看效果。
</
p
>
</
div
>
</
div
>
尝试一下 »
侧边栏案例
实例
尝试一下 »