动态切换不同的内容面板。
切换器组件包含多个切换按钮及其相关内容项。将 uk-switcher
属性添加到包含切换按钮的列表元素中。将 .uk-switcher
类添加到包含内容项的元素中。
默认情况下,具有 .uk-switcher
类的元素必须直接位于切换按钮之后,才能使切换器正常工作。如果您需要将它嵌套在另一个元素中(例如,当使用网格时),请将 connect: SELECTOR
选项添加到 uk-switcher
属性中,并选择包含切换项的元素。
通常,切换器按钮通过其他组件进行样式设置,其中一些将在此处显示。
<!-- This is the nav containing the toggling elements -->
<ul uk-switcher>
<li><a href="#"></a></li>
</ul>
<!-- This is the container of the content items -->
<ul class="uk-switcher">
<li></li>
</ul>
在此示例中,我们使用的是 子导航组件。
<ul class="uk-subnav uk-subnav-pill" uk-switcher>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
<ul class="uk-switcher uk-margin">
<li>Hello!</li>
<li>Hello again!</li>
<li>Bazinga!</li>
</ul>
在某些情况下,您希望从活动内容中切换到另一个内容部分。这可以使用 uk-switcher-item
属性实现。要定位项目,您需要将属性设置为相应内容项目的编号。
将属性设置为 next
和 previous
将切换到相邻项目。
<ul class="uk-switcher uk-margin">
<li><a href="#" uk-switcher-item="0"></a></li>
<li><a href="#" uk-switcher-item="1"></a></li>
<li><a href="#" uk-switcher-item="next"></a></li>
<li><a href="#" uk-switcher-item="previous"></a></li>
</ul>
<ul class="uk-subnav uk-subnav-pill" uk-switcher>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
<ul class="uk-switcher uk-margin">
<li>Hello! <a href="#" uk-switcher-item="2">Switch to item 3</a></li>
<li>Hello again! <a href="#" uk-switcher-item="next">Next item</a></li>
<li>Bazinga! <a href="#" uk-switcher-item="previous">Previous item</a></li>
</ul>
也可以连接多个内容容器。只需将 connect
参数添加到 uk-switcher
属性中,并使用适用于所有项目的选择器即可。
<!-- This is the nav containing the toggling elements -->
<ul uk-switcher="connect: .my-class">…</ul>
<!-- These are the containers of the content items -->
<ul class="uk-switcher my-class">…</ul>
<ul class="uk-switcher my-class">…</ul>
<ul class="uk-subnav uk-subnav-pill" uk-switcher="connect: .switcher-container">
<li><a href="#">Active</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
<h4>Container 1</h4>
<ul class="uk-switcher switcher-container uk-margin">
<li>Hello!</li>
<li>Hello again!</li>
<li>Bazinga!</li>
</ul>
<h4>Container 2</h4>
<ul class="uk-switcher switcher-container uk-margin">
<li>Hello! The first item.</li>
<li>Hello again! The second item.</li>
<li>Bazinga! The third item.</li>
</ul>
您可以将 动画组件 中的所有动画应用于切换器项目。为此,请将包含相关类的 animation
参数添加到 uk-switcher
属性中。
<ul uk-switcher="animation: uk-animation-fade">…</ul>
<ul class="uk-subnav uk-subnav-pill" uk-switcher="animation: uk-animation-fade">
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
<ul class="uk-switcher uk-margin">
<li>Hello!</li>
<li>Hello again!</li>
<li>Bazinga!</li>
</ul>
您也可以应用 动画组件 中的多个动画。这样,您可以添加不同的进出动画。
<ul uk-switcher="animation: uk-animation-slide-left-medium, uk-animation-slide-right-medium">…</ul>
<ul class="uk-subnav uk-subnav-pill" uk-switcher="animation: uk-animation-slide-left-medium, uk-animation-slide-right-medium">
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
<ul class="uk-switcher uk-margin">
<li>Hello!</li>
<li>Hello again!</li>
<li>Bazinga!</li>
</ul>
切换器很容易应用于 子导航组件。
<!-- This is the subnav containing the toggling elements -->
<ul class="uk-subnav uk-subnav-pill" uk-switcher>…</ul>
<!-- This is the container of the content items -->
<ul class="uk-switcher"></ul>
<ul class="uk-subnav uk-subnav-pill" uk-switcher>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
<ul class="uk-switcher uk-margin">
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</li>
<li>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</li>
<li>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur, sed do eiusmod.</li>
</ul>
作为规则的例外,将 uk-tab
属性添加到选项卡式导航(而不是 uk-switcher
),以将切换器与 标签组件 结合使用。
<!-- This is the subnav containing the toggling elements -->
<ul uk-tab>…</ul>
<!-- This is the container of the content items -->
<ul class="uk-switcher">…</ul>
<ul uk-tab>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
<ul class="uk-switcher uk-margin">
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</li>
<li>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</li>
<li>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur, sed do eiusmod.</li>
</ul>
使用 网格 和 宽度 组件以正确的布局显示带有垂直标签式导航的内容。
<div uk-grid>
<div class="uk-width-auto">
<ul class="uk-tab-left" uk-tab="connect: #my-id">…</ul>
</div>
<div class="uk-width-expand">
<ul id="my-id" class="uk-switcher">…</ul>
</div>
</div>
<div class="uk-child-width-1-2@s" uk-grid>
<div>
<div uk-grid>
<div class="uk-width-auto@m">
<ul class="uk-tab-left" uk-tab="connect: #component-tab-left; animation: uk-animation-fade">
<li><a href="#">Active</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
</div>
<div class="uk-width-expand@m">
<ul id="component-tab-left" class="uk-switcher">
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</li>
<li>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</li>
<li>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur, sed do eiusmod.</li>
</ul>
</div>
</div>
</div>
<div>
<div uk-grid>
<div class="uk-width-auto@m uk-flex-last@m">
<ul class="uk-tab-right" uk-tab="connect: #component-tab-right; animation: uk-animation-fade">
<li><a href="#">Active</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
</div>
<div class="uk-width-expand@m">
<ul id="component-tab-right" class="uk-switcher">
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</li>
<li>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</li>
<li>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur, sed do eiusmod.</li>
</ul>
</div>
</div>
</div>
</div>
切换器也可以应用于 按钮组件 中的按钮或按钮组。只需将切换器属性添加到包含按钮组的块中,或添加到具有 .uk-button-group
类的元素中。
<!-- This is a switcher using a number of buttons -->
<div uk-switcher="toggle: > *">
<button class="uk-button uk-button-default" type="button"></button>
<button class="uk-button uk-button-default" type="button"></button>
</div>
<ul class="uk-switcher">…</ul>
<div uk-switcher="animation: uk-animation-fade; toggle: > *">
<button class="uk-button uk-button-default" type="button">Item</button>
<button class="uk-button uk-button-default" type="button">Item</button>
<button class="uk-button uk-button-default" type="button">Item</button>
</div>
<ul class="uk-switcher uk-margin">
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</li>
<li>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</li>
<li>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur, sed do eiusmod.</li>
</ul>
注意 由于此示例未将按钮包装到列表项中,因此必须通过使用 toggle
选项更改触发内容切换的可点击元素。
要将切换器应用于 导航组件,请将 uk-switcher
属性添加到导航的 <ul>
元素中。使用 网格 和 宽度 组件将导航和内容排列在网格布局中。
<div uk-grid>
<div class="uk-width-small">
<ul class="uk-nav uk-nav-default" uk-switcher="connect: #my-id">…</ul>
</div>
<div class="uk-width-expand">
<ul id="my-id" class="uk-switcher">…</ul>
</div>
</div>
<div uk-grid>
<div class="uk-width-small@m">
<ul class="uk-nav uk-nav-default" uk-switcher="connect: #component-nav; animation: uk-animation-fade">
<li><a href="#">Active</a></li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a></li>
</ul>
</div>
<div class="uk-width-expand@m">
<ul id="component-nav" class="uk-switcher">
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</li>
<li>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</li>
<li>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur, sed do eiusmod.</li>
</ul>
</div>
</div>
可以将任何这些选项应用于组件属性。用分号分隔多个选项。 了解更多
选项 | 值 | 默认值 | 描述 |
---|---|---|---|
connect |
CSS 选择器 | ~.uk-switcher |
相关项目容器。默认情况下,与具有 'uk-switcher' 类的元素相邻的元素。 |
toggle |
CSS 选择器 | > * > :first-child |
选择触发内容切换的可点击元素。 |
itemNav |
CSS 选择器 | false |
相关导航容器。默认情况下,导航项仅在相关项目容器中找到。 |
active |
数字 | 0 |
初始化时的活动索引。提供负数表示从集合末尾开始的位置。 |
animation |
字符串 | false |
动画 的空格分隔名称。以逗号分隔表示动画退出。 |
duration |
数字 | 200 |
动画持续时间。 |
swiping |
布尔值 | true |
使用滑动。 |
followFocus |
布尔值 | false |
选择自动跟随焦点。 |
connect
是主要选项,如果它是属性值中的唯一选项,则可以省略其键。
<span uk-switcher=".switcher-container"></span>
了解更多关于 JavaScript 组件。
UIkit.switcher(element, options);
以下事件将在附加此组件的元素的连接项目上触发
名称 | 描述 |
---|---|
beforeshow |
在项目显示之前触发。可以通过对事件调用 preventDefault() 来阻止显示。 |
show |
在项目显示后触发。 |
shown |
在项目的显示动画完成后触发。 |
beforehide |
在项目隐藏之前触发。可以通过对事件调用 preventDefault() 来阻止隐藏。 |
hide |
在项目的隐藏动画开始后触发。 |
hidden |
在项目隐藏后触发。 |
以下方法可用于组件
UIkit.switcher(element).show(index);
显示具有给定索引的切换器项目。
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
索引 |
字符串、数字、节点 | 0 | 要显示的切换器项目。从 0 开始的索引。 |
切换器组件遵循 标签 WAI-ARIA 设计模式 并自动设置适当的 WAI-ARIA 角色、状态和属性。
tablist
角色,如果它是一个 导航组件,则 aria-orientation
状态设置为 vertical
。presentation
角色。tab
角色、aria-selected
状态,并且 aria-controls
属性设置为相应内容项目的 ID。presentation
角色。tabpanel
角色,并且 aria-labelledby
属性设置为相应切换项的 ID。可以使用以下键通过键盘访问切换导航。
默认情况下,切换器组件具有手动激活行为。这意味着相应的内容项将仅使用 enter 或 space 键激活。要切换到自动激活,请将 follow-focus
设置为 true
。当在切换项之间导航时,相应的内容项将自动变为活动状态。