动态切换不同的内容面板。
切换器组件由多个触发器和它们相关的内容项组成。将 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 -->
<div class="uk-switcher">
<div></div>
</div>
在此示例中,我们使用的是 子导航组件。
<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>
<div class="uk-switcher uk-margin">
<div>Hello!</div>
<div>Hello again!</div>
<div>Bazinga!</div>
</div>
在某些情况下,您希望从活动内容中切换到另一个内容部分。 可以使用 uk-switcher-item
属性实现此目的。 要定位项目,您需要将属性设置为相应内容项的编号。
将属性设置为 next
和 previous
将切换到相邻的项目。
<div class="uk-switcher uk-margin">
<div><a href="#" uk-switcher-item="0"></a></div>
<div><a href="#" uk-switcher-item="1"></a></div>
<div><a href="#" uk-switcher-item="next"></a></div>
<div><a href="#" uk-switcher-item="previous"></a></div>
</div>
<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>
<div class="uk-switcher uk-margin">
<div>Hello! <a href="#" uk-switcher-item="2">Switch to item 3</a></div>
<div>Hello again! <a href="#" uk-switcher-item="next">Next item</a></div>
<div>Bazinga! <a href="#" uk-switcher-item="previous">Previous item</a></div>
</div>
还可以连接多个内容容器。 只需将 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 -->
<div class="uk-switcher my-class">…</div>
<div class="uk-switcher my-class">…</div>
<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>
<div class="uk-switcher switcher-container uk-margin">
<div>Hello!</div>
<div>Hello again!</div>
<div>Bazinga!</div>
</div>
<h4>Container 2</h4>
<div class="uk-switcher switcher-container uk-margin">
<div>Hello! The first item.</div>
<div>Hello again! The second item.</div>
<div>Bazinga! The third item.</div>
</div>
您可以将 动画组件 中的所有动画应用于切换器项目。 为此,请将带有相关类的 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>
<div class="uk-switcher uk-margin">
<div>Hello!</div>
<div>Hello again!</div>
<div>Bazinga!</div>
</div>
您还可以应用来自 动画组件 的多个动画。 这样,您可以添加不同的入场和出场动画。
<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>
<div class="uk-switcher uk-margin">
<div>Hello!</div>
<div>Hello again!</div>
<div>Bazinga!</div>
</div>
切换器可以轻松应用于 子导航组件。
<!-- 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 -->
<div class="uk-switcher"></div>
<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>
<div class="uk-switcher uk-margin">
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
<div>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur, sed do eiusmod.</div>
</div>
作为规则的例外,将 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>
<div class="uk-switcher uk-margin">
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
<div>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur, sed do eiusmod.</div>
</div>
使用 网格 和 宽度 组件可以正确显示带有垂直选项卡式导航的内容。
<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">
<div id="my-id" class="uk-switcher">…</div>
</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">
<div id="component-tab-left" class="uk-switcher">
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
<div>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur, sed do eiusmod.</div>
</div>
</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">
<div id="component-tab-right" class="uk-switcher">
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
<div>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur, sed do eiusmod.</div>
</div>
</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>
<div class="uk-switcher">…</div>
<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>
<div class="uk-switcher uk-margin">
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
<div>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur, sed do eiusmod.</div>
</div>
注意由于此示例未将按钮包装到列表项中,因此必须通过使用 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">
<div id="my-id" class="uk-switcher">…</div>
</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">
<div id="component-nav" class="uk-switcher">
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>
<div>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur, sed do eiusmod.</div>
</div>
</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);
显示具有给定索引的切换器项。
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
index |
字符串、数字、节点 | 0 | 要显示的切换器项目。 基于 0 的索引。 |
切换器组件遵循 Tab 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
。 在切换器项目之间导航时,相应的内容项将自动变为活动状态。