通过切换器隐藏、切换或改变不同内容的外观。
要应用该组件,只需为 <button> 或 <a> 元素添加 uk-toggle="target: #ID" 属性。你可以在 toggle 属性中使用任意选择器。
切换器可用于为元素添加或移除类或属性。默认情况下,它会添加 hidden 属性来隐藏元素。
<button uk-toggle="target: #my-id" type="button"></button>
<p id="my-id"></p>What's up?
<div>
<button class="uk-button uk-button-default" type="button" uk-toggle="target: #toggle-usage">Toggle</button>
<p id="toggle-usage">What's up?</p>
</div>你也可以同时切换多个项目。只需在 uk-toggle 属性中添加 target: SELECTOR 选项,并使用适用于所有项目的选择器。
<button type="button" uk-toggle="target: .my-class"></button>
<p class="my-class"></p>
<p class="my-class"></p>Hello!
Bazinga!
<button class="uk-button uk-button-default" type="button" uk-toggle="target: .toggle">Toggle</button>
<p class="toggle">Hello!</p>
<p class="toggle" hidden>Bazinga!</p>注意 在此示例中,我们为其中一个项目添加了 hidden 属性,因此只会显示另一个项目。切换器会在两个元素之间切换可见状态。
如果你不想切换 hidden 属性,也可以切换一个自定义类。只需在 uk-toggle 属性中添加 cls: CLASS 选项。此示例中我们使用 .uk-card-primary 类在不同卡片样式之间切换。
<button type="button" uk-toggle="target: #my-id; cls: uk-card-primary"></button>
<p id="my-id" class="uk-card uk-card-default"></p><button class="uk-button uk-button-default" type="button" uk-toggle="target: #toggle-custom; cls: uk-card-primary">Toggle</button>
<div id="toggle-custom" class="uk-card uk-card-default uk-card-body uk-margin-small">Custom class</div>Toggle 组件允许你在项目之间切换时为其添加动画。只需把 Animation 组件中某个 .uk-animation-* 类添加到 animation 参数中。该类会同时应用于进入和退出的动画。如果你想使用不同的动画,只需再添加一个类。
<button type="button" uk-toggle="target: #my-id; animation: uk-animation-fade"></button>
<p id="my-id"></p><button href="#toggle-animation" class="uk-button uk-button-default" type="button" uk-toggle="target: #toggle-animation; animation: uk-animation-fade">Toggle</button>
<div id="toggle-animation" class="uk-card uk-card-default uk-card-body uk-margin-small">Animation</div>你还可以应用 Animation 组件中的多个动画。这样就能为进入和退出设置不同的动画。
<button type="button" uk-toggle="target: #my-id; animation: uk-animation-slide-left, uk-animation-slide-bottom"></button>
<p id="my-id"></p><button class="uk-button uk-button-default" type="button" uk-toggle="target: #toggle-animation-multiple; animation: uk-animation-slide-left, uk-animation-slide-bottom">Toggle</button>
<div id="toggle-animation-multiple" class="uk-card uk-card-default uk-card-body uk-margin-small">Animation</div>带动画切换多个项目时,你可能希望等第一个动画播放完毕后再为第二个项目添加动画。为此,只需在 uk-toggle 属性中添加 queued: true 选项。
<button type="button" uk-toggle="target: .my-class; animation: uk-animation-fade; queued: true"></button>
<p class="my-class"></p>
<p class="my-class"></p>Animation
Animation
<button class="uk-button uk-button-default" type="button" uk-toggle="target: .toggle-animation-queued; animation: uk-animation-fade; queued: true; duration: 300">Toggle</button>
<p class="toggle-animation-queued uk-card uk-card-default uk-card-body uk-margin-small">Animation</p>
<p class="toggle-animation-queued uk-card uk-card-primary uk-card-body uk-margin-small" hidden>Animation</p>切换器可以通过不同方式触发。只需在 uk-toggle 属性中添加 mode 选项,并应用下列值之一。
| 值 | 说明 |
|---|---|
hover |
切换器将在悬停时触发。 |
click |
切换器将在点击时触发。这是默认值。 |
click, hover |
切换器将在点击和悬停时触发。 |
media |
切换行为取决于视口宽度。更多信息。 |
<button type="button" uk-toggle="target: #my-id; mode: hover"></button>
<p id="my-id"></p>What's up?
<button class="uk-button uk-button-default" type="button" uk-toggle="target: #toggle-hover; mode: hover">hover</button>
<p id="toggle-hover">What's up?</p>使用 media 模式时,还必须添加 media 选项并为其指定一个可选值。例如添加一个以像素为单位的数字,如 640,或者一个断点,如 @s、@m、@l 或 @xl。如果没有 target 选项,切换器会把切换状态应用到自身。这意味着它会根据当前显示的视口宽度,在 cls 选项中定义的不同状态之间切换。
<!-- The primary modifier will only be applied on large screens -->
<div class="uk-card uk-card-default" uk-toggle="cls: uk-card-primary; mode: media; media: @l"></div><div class="uk-card uk-card-default uk-card-body uk-width-medium" uk-toggle="cls: uk-card-primary; mode: media; media: @l">
Primary on large screens
</div>注意 初始切换状态取决于 cls 选项。它要么是以空格分隔的列表中给出的第一个类,要么在设为 false 时使用 hidden 属性。如果给出了多个类,其余类只会在状态变化时被切换。
这些选项都可以应用到组件属性上。多个选项之间用分号分隔。了解更多
| 选项 | 值 | 默认值 | 说明 |
|---|---|---|---|
target |
String | false |
要切换的元素的 CSS 选择器。 |
mode |
String | click |
逗号分隔的触发行为模式列表。(hover、click、media) |
cls |
String | false |
被切换的类。默认为 hidden 属性。 |
media |
Boolean, Number, String | false |
在 media 模式下触发切换的条件——以整数表示的宽度(如 640)、断点(如 @s、@m、@l、@xl)或任意合法的媒体查询(如 (min-width: 900px))。 |
animation |
String | false |
以空格分隔的动画名称。退出动画用以逗号分隔。 |
duration |
Number | 200 |
动画时长,单位为毫秒。 |
queued |
Boolean | true |
依次切换各个目标。 |
target 是 Primary 选项,如果它是属性值中唯一的选项,可以省略其键名。
<span uk-toggle=".my-class"></span>了解更多关于 JavaScript 组件的内容。
UIkit.toggle(element, options);以下事件会在绑定了该组件的元素上触发:
| 名称 | 说明 |
|---|---|
beforeshow |
项目显示之前触发。可以通过在事件上调用 preventDefault() 来阻止显示。 |
show |
项目显示之后触发。 |
shown |
项目的显示动画完成之后触发。 |
beforehide |
项目隐藏之前触发。可以通过在事件上调用 preventDefault() 来阻止隐藏。 |
hide |
项目的隐藏动画开始之后触发。 |
hidden |
项目隐藏之后触发。 |
该组件提供以下方法:
UIkit.toggle(element).toggle();切换 Toggle 的目标。
Toggle 组件会自动设置恰当的 WAI-ARIA 角色、状态和属性。
<a> 元素,toggle 元素会带有 button 角色。aria-expanded 属性。切换时它会自动更新。