创建一个从页面滑入滑出的侧边栏,非常适合创建移动导航。
要应用此组件,请将 uk-offcanvas
属性添加到父 <div>
元素,并使用以下类。
类 | 描述 |
---|---|
.uk-offcanvas-bar |
将此类添加到子 <div> 元素。 |
.uk-offcanvas-close |
将此类和 uk-close 属性添加到 <a> 或 <button> 元素以创建关闭按钮并启用其功能。 |
您可以使用任何元素来切换侧边栏。要启用必要的 JavaScript,请添加 uk-toggle
属性。<a>
元素需要链接到侧边栏容器的 id。如果您使用的是其他元素,例如按钮,只需添加 uk-toggle="target: #ID"
属性以定位侧边栏容器的 id。
<body>
<!-- This is a button toggling the off-canvas -->
<button uk-toggle="target: #my-id" type="button"></button>
<!-- This is an anchor toggling the off-canvas -->
<a href="#my-id" uk-toggle></a>
<!-- This is the off-canvas -->
<div id="my-id" uk-offcanvas>
<div class="uk-offcanvas-bar">
<button class="uk-offcanvas-close" type="button" uk-close></button>
</div>
</div>
</body>
<button class="uk-button uk-button-default uk-margin-small-right" type="button" uk-toggle="target: #offcanvas-usage">Open</button>
<a href="#offcanvas-usage" uk-toggle>Open</a>
<div id="offcanvas-usage" uk-offcanvas>
<div class="uk-offcanvas-bar">
<button class="uk-offcanvas-close" type="button" uk-close></button>
<h3>Title</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
</div>
要添加覆盖层,使页面变暗,请将 overlay: true
参数添加到 uk-offcanvas
属性。
<div id="my-id" uk-offcanvas="overlay: true">…</div>
<button class="uk-button uk-button-default" type="button" uk-toggle="target: #offcanvas-overlay">Open</button>
<div id="offcanvas-overlay" uk-offcanvas="overlay: true">
<div class="uk-offcanvas-bar">
<button class="uk-offcanvas-close" type="button" uk-close></button>
<h3>Title</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
</div>
将 flip: true
参数添加到 uk-offcanvas
属性以调整其对齐方式,使其从右侧滑入。
<div id="my-id" uk-offcanvas="flip: true">…</div>
<button class="uk-button uk-button-default" type="button" uk-toggle="target: #offcanvas-flip">Open</button>
<div id="offcanvas-flip" uk-offcanvas="flip: true; overlay: true">
<div class="uk-offcanvas-bar">
<button class="uk-offcanvas-close" type="button" uk-close></button>
<h3>Title</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
</div>
默认情况下,侧边栏会滑入。但您实际上可以选择侧边栏进入的不同动画模式。只需添加以下属性之一。
参数 | 描述 |
---|---|
mode: slide |
侧边栏滑出并覆盖内容。这是默认模式。 |
mode: push |
侧边栏滑出并推动站点。 |
mode: reveal |
侧边栏滑出并露出其内容,同时推动站点。 |
mode: none |
侧边栏出现并覆盖内容,无动画。 |
<div id="my-id" uk-offcanvas="mode: push">…</div>
<button class="uk-button uk-button-default uk-margin-small-right" type="button" uk-toggle="target: #offcanvas-slide">Slide</button>
<button class="uk-button uk-button-default uk-margin-small-right" type="button" uk-toggle="target: #offcanvas-push">Push</button>
<button class="uk-button uk-button-default uk-margin-small-right" type="button" uk-toggle="target: #offcanvas-reveal">Reveal</button>
<button class="uk-button uk-button-default uk-margin-small-right" type="button" uk-toggle="target: #offcanvas-none">None</button>
<div id="offcanvas-slide" uk-offcanvas="overlay: true">
<div class="uk-offcanvas-bar">
<button class="uk-offcanvas-close" type="button" uk-close></button>
<h3>Title</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
</div>
<div id="offcanvas-push" uk-offcanvas="mode: push; overlay: true">
<div class="uk-offcanvas-bar">
<button class="uk-offcanvas-close" type="button" uk-close></button>
<h3>Title</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
</div>
<div id="offcanvas-reveal" uk-offcanvas="mode: reveal; overlay: true">
<div class="uk-offcanvas-bar">
<button class="uk-offcanvas-close" type="button" uk-close></button>
<h3>Title</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
</div>
<div id="offcanvas-none" uk-offcanvas="mode: none; overlay: true">
<div class="uk-offcanvas-bar">
<button class="uk-offcanvas-close" type="button" uk-close></button>
<h3>Title</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</div>
</div>
您可以在侧边栏内使用 导航组件 来创建移动导航。
<div id="my-id" uk-offcanvas>
<div class="uk-offcanvas-bar">
<ul class="uk-nav uk-nav-default">…</ul>
</div>
</div>
<button class="uk-button uk-button-default uk-margin-small-right" type="button" uk-toggle="target: #offcanvas-nav-primary">Primary Nav</button>
<button class="uk-button uk-button-default" type="button" uk-toggle="target: #offcanvas-nav">Default Nav</button>
<div id="offcanvas-nav-primary" uk-offcanvas="overlay: true">
<div class="uk-offcanvas-bar uk-flex uk-flex-column">
<ul class="uk-nav uk-nav-primary uk-nav-center uk-margin-auto-vertical">
<li class="uk-active"><a href="#">Active</a></li>
<li class="uk-parent">
<a href="#">Parent</a>
<ul class="uk-nav-sub">
<li><a href="#">Sub item</a></li>
<li><a href="#">Sub item</a></li>
</ul>
</li>
<li class="uk-nav-header">Header</li>
<li><a href="#"><span class="uk-margin-small-right" uk-icon="icon: table"></span> Item</a></li>
<li><a href="#"><span class="uk-margin-small-right" uk-icon="icon: thumbnails"></span> Item</a></li>
<li class="uk-nav-divider"></li>
<li><a href="#"><span class="uk-margin-small-right" uk-icon="icon: trash"></span> Item</a></li>
</ul>
</div>
</div>
<div id="offcanvas-nav" uk-offcanvas="overlay: true">
<div class="uk-offcanvas-bar">
<ul class="uk-nav uk-nav-default">
<li class="uk-active"><a href="#">Active</a></li>
<li class="uk-parent">
<a href="#">Parent</a>
<ul class="uk-nav-sub">
<li><a href="#">Sub item</a></li>
<li><a href="#">Sub item</a></li>
</ul>
</li>
<li class="uk-nav-header">Header</li>
<li><a href="#"><span class="uk-margin-small-right" uk-icon="icon: table"></span> Item</a></li>
<li><a href="#"><span class="uk-margin-small-right" uk-icon="icon: thumbnails"></span> Item</a></li>
<li class="uk-nav-divider"></li>
<li><a href="#"><span class="uk-margin-small-right" uk-icon="icon: trash"></span> Item</a></li>
</ul>
</div>
</div>
任何这些选项都可以应用于组件属性。用分号隔开多个选项。 了解更多
选项 | 值 | 默认 | 描述 |
---|---|---|---|
mode |
字符串 | slide |
侧边栏动画模式 (slide , reveal , push 或 none )。 |
flip |
布尔值 | false |
将侧边栏翻转到右侧。 |
overlay |
布尔值 | false |
与覆盖层一起显示侧边栏。 |
esc-close |
布尔值 | true |
按 Esc 键关闭侧边栏。 |
bg-close |
布尔值 | true |
单击背景关闭侧边栏。 |
container |
字符串 | false |
通过选择器定义目标容器,以指定应在 DOM 中附加侧边栏的位置。将其设置为 false 将阻止此行为。 |
mode
是主要选项,如果它是属性值中的唯一选项,则可以省略其键。
<span uk-offcanvas="push"></span>
详细了解 JavaScript 组件.
UIkit.offcanvas(element, options);
以下事件将在附加了此组件的元素上触发
名称 | 描述 |
---|---|
beforeshow |
在显示项目之前触发。 |
show |
在显示项目后触发。 |
shown |
在项目显示动画完成之后触发。 |
beforehide |
在隐藏项目之前触发。 |
hide |
在项目隐藏动画开始之后触发。 |
hidden |
在隐藏项目之后触发。 |
以下方法可用于组件
UIkit.offcanvas(element).show();
显示侧边栏。
UIkit.offcanvas(element).hide();
隐藏侧边栏。
侧边栏组件遵循 对话框 (模态框) WAI-ARIA 设计模式,并自动设置适当的 WAI-ARIA 角色、状态和属性。
dialog
角色,如果侧边栏有覆盖层,则具有 aria-modal
属性。关闭组件自动设置适当的 WAI-ARIA 角色和属性。
aria-label
属性,如果使用 <a>
元素,则具有 button
角色。可以使用以下键通过键盘访问侧边栏组件。
bg-close: false
选项,则此行为将被禁用。