トグル
トグルレイアウト
レイアウトは非常にシンプルです
<!-- 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>
トグルカラー
トグルはすべてのデフォルトカラーをサポートしています。したがって、色を変更するには、トグル要素にclass="color-[color]"を追加するだけです。
<!-- red toggle -->
<label class="toggle color-red">...</label>
<!-- orange toggle -->
<label class="toggle color-orange">...</label>
トグルアプリメソッド
トグルを操作するための関連アプリメソッドを見てみましょう
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 | トグル要素。トグル要素のHTMLElementまたはCSSセレクターを含む文字列 | |
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 | トグルインスタンスが破棄される直前にイベントがトリガーされます。引数として、イベントハンドラーはトグルインスタンスを受け取ります |
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);
}
例
<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>