建立一個可滑入和滑出頁面的側邊欄,非常適合建立行動版導覽。
要套用此組件,請將 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-xsmall-right" uk-icon="icon: table"></span> Item</a></li>
<li><a href="#"><span class="uk-margin-xsmall-right" uk-icon="icon: thumbnails"></span> Item</a></li>
<li class="uk-nav-divider"></li>
<li><a href="#"><span class="uk-margin-xsmall-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-xsmall-right" uk-icon="icon: table"></span> Item</a></li>
<li><a href="#"><span class="uk-margin-xsmall-right" uk-icon="icon: thumbnails"></span> Item</a></li>
<li class="uk-nav-divider"></li>
<li><a href="#"><span class="uk-margin-xsmall-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 |
bg-close |
布林值 | 布林值 |
布林值 |
container |
字串 | 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
角色。可以使用以下按鍵透過鍵盤存取側邊欄組件。
esc-close: false
選項,則會停用此行為。