切换
切换布局
布局非常简单
<!-- Toggle element -->
<label class="toggle">
<!-- Toggle input -->
<input type="checkbox" />
<!-- Toggle icon -->
<span class="toggle-icon"></span>
</label>
在简单列表内
<div class="list simple-list">
<ul>
...
<li>
<span>Text label</span>
<label class="toggle">
<input type="checkbox" />
<span class="toggle-icon"></span>
</label>
</li>
</ul>
</div>
在常规列表内(建议在 item-after
中)
<div class="list">
<ul>
...
<li class="item-content">
<div class="item-inner">
<div class="item-title">Text label</div>
<div class="item-after">
<label class="toggle">
<input type="checkbox" />
<span class="toggle-icon"></span>
</label>
</div>
</div>
</li>
</ul>
</div>
切换颜色
切换支持所有 默认颜色。因此,若要更改其颜色,只需向切换元素添加 color-[color] 类。
<!-- red toggle -->
<label class="toggle color-red">...</label>
<!-- orange toggle -->
<label class="toggle color-orange">...</label>
切换应用程序方法
我们来看相关的 App 方法来使用切换
app.toggle.create(parameters) - 创建切换实例
- parameters - object。带切换参数的对象
该方法返回创建的切换实例
app.toggle.destroy(el) - 销毁切换实例
- el - HTMLElement 或 string(带有 CSS 选择器)或 object。要销毁的切换元素或切换实例。
app.toggle.get(el) - 根据 HTML 元素获取切换实例
- el - HTMLElement 或 string(带有 CSS 选择器)。切换元素。
该方法返回切换的实例
切换参数
现在我们来看创建切换所需的可用参数列表
参数 | 类型 | 默认 | 说明 |
---|---|---|---|
el | HTMLElement string | 切换元素。具有切换元素 CSS 选择器的 HTMLElement 或字符串 | |
on | object | 具有事件处理程序的对象。举例来说
|
切换方法和属性
因此创建切换时,我们必须调用
var toggle = app.toggle.create({ /* parameters */ })
之后,我们有其初始化的实例(如上例中的 toggle
变量),其中包含有用的方法和属性
属性 | |
---|---|
toggle.app | 指向全局应用实例的链接 |
toggle.el | 切换 HTML 元素 |
toggle.$el | 包含切换 HTML 元素的 Dom7 实例 |
toggle.inputEl | 切换输入 HTML 元素 |
toggle.$inputEl | 包含切换输入 HTML 元素的 Dom7 实例 |
toggle.checked | 指示其输入是否已检查的布尔属性 |
toggle.params | 切换参数 |
方法 | |
toggle.toggle() | 切换输入状态 |
toggle.on(event, handler) | 添加事件处理程序 |
toggle.once(event, handler) | 添加事件处理程序,将在触发后将其删除 |
toggle.off(event, handler) | 删除事件处理程序 |
toggle.off(event) | 删除指定事件的所有处理程序 |
toggle.emit(event, ...args) | 在实例上触发事件 |
切换事件
切换将触发切换元素以下 DOM 事件及应用和切换实例的事件
DOM 事件
事件 | 目标 | 说明 |
---|---|---|
toggle:change | 切换元素<div class="toggle"> | 当切换状态发生改变时,将触发该事件 |
toggle:beforedestroy | 切换元素<div class="toggle"> | 在切换实例被销毁之前,将触发该事件 |
应用与切换实例事件
切换实例在自身实例和应用实例上都触发事件。应用实例事件具有相同名称,但前缀为 toggle
。
事件 | 参数 | 目标 | 说明 |
---|---|---|---|
change | toggle | toggle | 切换状态改变时将触发事件。作为参数,事件处理程序接收切换实例 |
toggleChange | toggle | app | |
beforeDestroy | toggle | toggle | 在 Toggle 实例被销毁之前将触发事件。作为参数,事件处理程序接收切换实例 |
toggleBeforeDestroy | toggle | app |
切换自动初始化
如果您不需要使用切换 API,并且您的切换位于页面内部,并在页面初始化时出示在 DOM 中,那么只需添加额外的 toggle-init
类即可自动初始化它
<!-- Add toggle-init class -->
<label class="toggle toggle-init">
<input type="checkbox" />
<span class="toggle-icon"></span>
</label>
在这种情况下,如果您需要访问已创建的切换实例,您可以使用 app.toggle.get
应用程序方法
var toggle = app.toggle.get('.toggle');
if (toggle.checked) {
// do something
}
CSS 变量
以下是相关 CSS 变量(CSS 自定义属性)列表。
请注意,带注释的变量未按默认指定,并且值是它们在这种情况下回退的值。
.ios {
--f7-toggle-width: 52px;
--f7-toggle-height: 32px;
/*
--f7-toggle-active-bg-color: var(--f7-theme-color);
*/
--f7-toggle-inactive-knob-bg-color: #fff;
--f7-toggle-active-knob-bg-color: #fff;
--f7-toggle-inactive-border-color: #e5e5e5;
--f7-toggle-inactive-bg-color: #fff;
}
.ios .dark,
.ios.dark {
--f7-toggle-inactive-border-color: #555;
--f7-toggle-inactive-bg-color: #555;
}
.md {
--f7-toggle-width: 52px;
--f7-toggle-height: 32px;
}
.md,
.md .dark,
.md [class*='color-'] {
--f7-toggle-inactive-bg-color: var(--f7-md-surface-variant);
--f7-toggle-active-bg-color: var(--f7-theme-color);
--f7-toggle-inactive-knob-bg-color: var(--f7-md-outline);
--f7-toggle-active-knob-bg-color: var(--f7-md-on-primary);
--f7-toggle-inactive-border-color: var(--f7-md-outline);
--f7-toggle-active-border-color: var(--f7-theme-color);
}
示例
toggle.html
<div class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner sliding">
<div class="title">Toggle</div>
</div>
</div>
<div class="page-content">
<div class="block-title">Super Heroes</div>
<div class="list list-strong list-outline-ios list-dividers-ios">
<ul>
<li>
<label class="item-content">
<div class="item-inner">
<div class="item-title">Batman</div>
<div class="item-after">
<div class="toggle toggle-init">
<input type="checkbox" checked>
<span class="toggle-icon"></span>
</div>
</div>
</div>
</label>
</li>
<li>
<label class="item-content">
<div class="item-inner">
<div class="item-title">Aquaman</div>
<div class="item-after">
<div class="toggle toggle-init color-blue">
<input type="checkbox" checked>
<span class="toggle-icon"></span>
</div>
</div>
</div>
</label>
</li>
<li>
<label class="item-content">
<div class="item-inner">
<div class="item-title">Superman</div>
<div class="item-after">
<div class="toggle toggle-init color-red">
<input type="checkbox" checked>
<span class="toggle-icon"></span>
</div>
</div>
</div>
</label>
</li>
<li>
<label class="item-content">
<div class="item-inner">
<div class="item-title">Hulk</div>
<div class="item-after">
<div class="toggle toggle-init color-green">
<input type="checkbox">
<span class="toggle-icon"></span>
</div>
</div>
</div>
</label>
</li>
<li>
<label class="item-content">
<div class="item-inner">
<div class="item-title">Spiderman</div>
<div class="item-after">
<div class="toggle toggle-init disabled">
<input type="checkbox">
<span class="toggle-icon"></span>
</div>
</div>
</div>
</label>
</li>
<li>
<label class="item-content">
<div class="item-inner">
<div class="item-title">Ironman</div>
<div class="item-after">
<div class="toggle toggle-init toggle-init">
<input type="checkbox" checked disabled>
<span class="toggle-icon"></span>
</div>
</div>
</div>
</label>
</li>
<li>
<label class="item-content">
<div class="item-inner">
<div class="item-title">Thor</div>
<div class="item-after">
<div class="toggle toggle-init color-orange">
<input type="checkbox" checked>
<span class="toggle-icon"></span>
</div>
</div>
</div>
</label>
</li>
<li>
<label class="item-content">
<div class="item-inner">
<div class="item-title">Wonder</div>
<div class="item-after">
<div class="toggle toggle-init color-pink">
<input type="checkbox">
<span class="toggle-icon"></span>
</div>
</div>
</div>
</label>
</li>
</ul>
</div>
</div>
</div>