Vue.js学習Item 6--クラスとスタイルの結合
5064 ワード
データバインディングの一般的な需要は、操作要素のクラスリストとその内部連結スタイルです.これらはすべてatributeなので、
HTMLクラスをバインドする
Mustacheタグでクラスをバインドすることができますが、例えば‘%raw’class='{classis Name}'{%endraw%}`、このような書き方と`v-bind:class`混用は勧められません.二つは一つしか選べません.
オブジェクト文法
私たちは
データ内のオブジェクトを直接結びつけることもできます.
配列文法
私たちは一つの配列を
ただし、複数の条件がある場合は、このように書くのはちょっと煩わしいです.1.0.19+では、配列文法でオブジェクト文法を使用することができます.
オブジェクト文法
配列文法
v-bind
でそれらを処理できます.表現の最終的な文字列だけを計算する必要があります.しかし、文字列をつなぎ合わせるのは面倒で間違いやすいです.したがって、v-bind
がclass
およびstyle
に使用されるとき、Vue.jsは特にそれを強化する.表式の結果の種類は、文字列以外にもオブジェクトまたは配列とすることができます.HTMLクラスをバインドする
Mustacheタグでクラスをバインドすることができますが、例えば‘%raw’class='{classis Name}'{%endraw%}`、このような書き方と`v-bind:class`混用は勧められません.二つは一つしか選べません.
オブジェクト文法
私たちは
v-bind:class
のオブジェクトに転送して、動的にクラスを切り替えることができます.注意v-bind:class
コマンドは、通常のclass
の特性と共存することができる.<div class="static" v-bind:class="{ 'class-a': isA, 'class-b': isB }"></div>
data: {
isA: true,
isB: false
}
レンダリング:<div class="static class-a"></div>
isA
およびisB
が変化すると、クラスリストはそれに応じて更新される.例えば、isB
がtrue
に変わると、クラスリストは"static class-a class-b"
になる.データ内のオブジェクトを直接結びつけることもできます.
<div v-bind:class="classObject"></div>
data: {
classObject: {
'class-a': true,
'class-b': false
}
}
ここでは戻りオブジェクトの計算属性を結びつけることもできます.これはよく使われていて強力なモデルです.配列文法
私たちは一つの配列を
v-bind:class
に伝達して、一つのクラスリストを適用できます.<div v-bind:class="[classA, classB]">
data: {
classA: 'class-a',
classB: 'class-b'
}
レンダリング:<div class="class-a class-b"></div>
条件によってリストのクラスを切り替えたいなら、3元の表現が使えます.<div v-bind:class="[classA, isB ? classB : '']">
この例は常にclassA
を追加しているが、isB
がtrue
であるときだけclassB
を追加する.ただし、複数の条件がある場合は、このように書くのはちょっと煩わしいです.1.0.19+では、配列文法でオブジェクト文法を使用することができます.
<div v-bind:class="[classA, { classB: isB, classC: isC }]">
結合インラインスタイルオブジェクト文法
v-bind:style
の対象文法はとても直観的です.CSSのように見えますが、実はJavaScriptオブジェクトです.CSS属性名は、ラクダピークまたは短い横分割で命名することができます.<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
data: {
activeColor: 'red',
fontSize: 30
}
スタイルオブジェクトに直接結合すると、テンプレートがより明確になります.<div v-bind:style="styleObject"></div>
data: {
styleObject: {
color: 'red',
fontSize: '13px'
}
}
同じように、オブジェクト文法は、リターンオブジェクトの計算属性と結合してよく使用されます.配列文法
v-bind:style
の配列構文は、複数のスタイルオブジェクトを1つの要素に適用することができる.<div v-bind:style="[styleObjectA, styleObjectB]">
プレフィックスの自動追加v-bind:style
がベンダープレフィックスが必要なCSS属性を使用すると、transform
のように、Vue.jsは自動的に検出し、対応するプレフィックスを追加する.