6 P$ m" ^0 N9 a5 \
Vue.js classclass 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性。 Vue.js v-bind 在处理 class 和 style 时, 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。 class 属性绑定我们可以为 v-bind:class 设置一个对象,从而动态的切换 class: 实例 1实例中将 isActive 设置为 true 显示了一个绿色的 div 块,如果设置为 false 则不显示: % ^7 ]" L& D% A$ k
, L2 x- u4 w( a/ D# E3 [2 `2 ^- <div v-bind:class="{ active: isActive }"></div>
复制代码 以上实例 div class 为:# }3 Q: t4 P. f/ k, z6 p
- <div class="active"></div>
复制代码我们也可以在对象中传入更多属性用来动态切换多个 class 。 实例 2text-danger 类背景颜色覆盖了 active 类的背景色: 5 M0 y9 E7 G, J; Q+ |0 h
; K: D7 T- l7 U- L! N. R. u6 g
- <div class="static"
, `1 F8 M/ b" ^$ r" Z- ^* K5 c - v-bind:class="{ active: isActive, 'text-danger': hasError }">3 m4 `: t& q R% j' ? Q
- </div>
复制代码 以上实例 div class 为:/ b- ?. a: x5 n+ A
- <div class="static active text-danger"></div>
复制代码我们也可以直接绑定数据里的一个对象: 实例 3text-danger 类背景颜色覆盖了 active 类的背景色:
( Y1 R6 ~$ q* [
+ x* z, T7 j) q$ h. ~- <div id="app">
' r" v* E! Q- k9 L% Z2 J$ v$ o2 ~( P - <div v-bind:class="classObject"></div>
# S1 B9 y+ O) I2 \* g. \( W - </div>
复制代码实例 3 与 实例 2 的渲染结果是一样的。 此外,我们也可以在这里绑定返回对象的计算属性。这是一个常用且强大的模式: 实例 4- f, z2 |# Y, B, V
, Q$ d# B' D5 A$ k0 Y7 F- new Vue({
[5 G* _4 s- I( j- \ - el: '#app',7 |$ x2 t, X3 O
- data: {# ^/ E6 u3 e; ~* J( Z
- isActive: true,2 F2 l' E' ^+ ], o
- error: null! C( G2 h) s' } n! h3 J- Q# _
- },
# v# [! }& v* W - computed: {2 ^1 d6 s) a; i
- classObject: function () {
6 f* x# l) A( n8 v* Y. e: \; b; p - return {; a2 o6 g2 M6 \& m
- active: this.isActive && !this.error,
3 J: t7 e. s" T - 'text-danger': this.error && this.error.type === 'fatal',
@6 I- Q- R; H2 s& n5 Z) V% d - }# f+ E3 z- C6 m. n
- }% ]2 A0 K6 F1 ~. m# B( r2 V- u
- }
( C# t) [! h2 }& s* j* R - })
复制代码 数组语法我们可以把一个数组传给 v-bind:class ,实例如下: 实例 5
+ {2 j7 ]- l6 X" L+ \* J: A* i6 C( K! b6 @
- <div v-bind:class="[activeClass, errorClass]"></div>
复制代码 以上实例 div class 为:3 ?% U9 i2 m* `) k
- <div class="active text-danger"></div>
复制代码我们还可以使用三元表达式来切换列表中的 class : 实例 6errorClass 是始终存在的,isActive 为 true 时添加 activeClass 类: ( j, p" B6 f* ? T5 z4 b
8 Q/ y. y0 T3 K- |) b8 ?
- <div v-bind:class="[errorClass ,isActive ? activeClass : '']"></div>
复制代码
: u! F. ?' y0 l1 H" ^+ X' F2 Y. U7 }6 R6 A# N4 S, i B
Vue.js style(内联样式)我们可以在 v-bind:style 直接设置样式: 实例 7% s; B. k1 S2 c$ \( _, k2 ^
; c; S K% z( ~0 v
- <div id="app">3 q, s9 w6 r2 W5 x* d' ^% b. X
- <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">菜鸟教程</div>4 a( j( G) A, a5 w
- </div>
复制代码 以上实例 div style 为:. x4 B7 S0 ~' @% F
- <div style="color: green; font-size: 30px;">菜鸟教程</div>
复制代码也可以直接绑定到一个样式对象,让模板更清晰: 实例 8
+ m' ]: U9 |2 V! ^) A6 V/ ^' D: m5 E$ w+ y+ w
- <div id="app">
8 r R! x# F2 p# u) l) _: z% d# C - <div v-bind:style="styleObject">菜鸟教程</div>8 l& F: N3 t5 P: ~3 z1 S1 m' e
- </div>
复制代码v-bind:style 可以使用数组将多个样式对象应用到一个元素上: 实例 9" t( t% w Y9 j2 {6 Z* y3 I
/ O; D$ M* G* Q1 b4 u- <div id="app">
9 {6 ?* K1 T, N# n9 [, } - <div v-bind:style="[baseStyles, overridingStyles]">菜鸟教程</div>9 c( V' P% V- t* n6 y. k4 l: A
- </div>
复制代码 * W, T, o6 V, A- _" q8 i! M
- W) E1 r* S( n1 N( U; p注意:当 v-bind:style 使用需要特定前缀的 CSS 属性时,如 transform ,Vue.js 会自动侦测并添加相应的前缀。
* ?: }# r% J( R9 {" ?/ F+ z9 p! \8 k7 l& X6 t) N& h
- _: O" [6 q2 {) X# v3 Q X% I- k8 f+ x, [& s7 I$ E
7 O7 v& N( m% `( O( j# `7 |+ V |