0 c8 J4 O5 Y9 ]3 T
Vue.js classclass 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性。 Vue.js v-bind 在处理 class 和 style 时, 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。 class 属性绑定我们可以为 v-bind:class 设置一个对象,从而动态的切换 class: 实例 1实例中将 isActive 设置为 true 显示了一个绿色的 div 块,如果设置为 false 则不显示:
0 y, n" X# e# h. G* v5 Z N' A5 K* q' B+ K! E& Q/ h
- <div v-bind:class="{ active: isActive }"></div>
复制代码 以上实例 div class 为:5 j# b' e' H/ [+ A8 S& p% V
- <div class="active"></div>
复制代码我们也可以在对象中传入更多属性用来动态切换多个 class 。 实例 2text-danger 类背景颜色覆盖了 active 类的背景色: - X8 A: i* Q0 R2 \
2 H' d |5 o5 I3 d1 M
- <div class="static"
& z! c/ d9 Z. O7 r - v-bind:class="{ active: isActive, 'text-danger': hasError }">/ F) y6 |& r& \ X# I m5 T
- </div>
复制代码 以上实例 div class 为:
w3 N) H+ O \+ F- <div class="static active text-danger"></div>
复制代码我们也可以直接绑定数据里的一个对象: 实例 3text-danger 类背景颜色覆盖了 active 类的背景色:
4 S8 U: _' S% r1 ~* K/ T' m T8 t
4 E0 V9 o. i2 G7 i @- <div id="app">
1 J" F6 M& B# q; R8 m; I* G) t - <div v-bind:class="classObject"></div>" u; \/ |( M, K6 h0 Z
- </div>
复制代码实例 3 与 实例 2 的渲染结果是一样的。 此外,我们也可以在这里绑定返回对象的计算属性。这是一个常用且强大的模式: 实例 4
' V# z3 o, U3 b2 @6 n$ O
. i3 m4 Q! m( E/ o* U- new Vue({: N% k( y0 `. s! O; b, t
- el: '#app',7 K, I7 e3 t' J! R# c9 I
- data: {
- X$ x8 ]# t+ u9 }* O - isActive: true,
6 `. j8 A5 K) e6 x - error: null
8 p: s `9 R0 l - },# v2 ^$ d, N: D1 C
- computed: {1 h, K: q* Q( ^3 z1 r
- classObject: function () {
) t/ B+ E. L6 I9 ^, z5 z - return {8 f0 O* D+ B! R+ g+ o9 E% D0 r W4 O
- active: this.isActive && !this.error,$ {4 t* }, l) i m/ y4 a5 e+ c
- 'text-danger': this.error && this.error.type === 'fatal',
$ U; [. ^+ F/ S) q# q - }7 l7 B8 {) z' b8 B' ]
- }
( x4 o% Z9 X+ C! [- x - }
: v1 E6 N- y$ h5 y* O1 Q# m - })
复制代码 数组语法我们可以把一个数组传给 v-bind:class ,实例如下: 实例 5
+ w. R, O% J0 g2 d4 X
4 T8 x; X+ ~) c i- <div v-bind:class="[activeClass, errorClass]"></div>
复制代码 以上实例 div class 为:
( |. Q9 a% J2 m2 F* W) E1 _, k- <div class="active text-danger"></div>
复制代码我们还可以使用三元表达式来切换列表中的 class : 实例 6errorClass 是始终存在的,isActive 为 true 时添加 activeClass 类:
/ Z8 N5 X* Y/ z3 t' L, Q
( u$ P" t1 @4 m& r# n& ]- <div v-bind:class="[errorClass ,isActive ? activeClass : '']"></div>
复制代码 $ c+ C# s. S5 \ m
6 ~- f( q; u. @
Vue.js style(内联样式)我们可以在 v-bind:style 直接设置样式: 实例 7
* o$ g# \1 `' {
$ Q; q8 M% v. a& d( N6 P U- <div id="app">& y" @& _0 C6 J9 U+ @" `
- <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">菜鸟教程</div>7 a- P7 S3 m5 O
- </div>
复制代码 以上实例 div style 为:
! t# v) c$ o9 }' R, [; I+ A$ i' M- <div style="color: green; font-size: 30px;">菜鸟教程</div>
复制代码也可以直接绑定到一个样式对象,让模板更清晰: 实例 8: M8 {+ e8 e1 p8 I! b9 e1 y0 C
8 H' t5 B0 Z8 x6 t1 {9 z
- <div id="app">- y: Q% ~2 a9 q) d' P# @
- <div v-bind:style="styleObject">菜鸟教程</div>
! @( E+ u7 W( Z5 O9 \; Z - </div>
复制代码v-bind:style 可以使用数组将多个样式对象应用到一个元素上: 实例 9
5 Z1 o+ ]8 \' L8 ~# b, H6 c+ b( l0 T4 Q# x
- <div id="app">
# o1 a/ Z% {, ? E4 Y6 R: R' H - <div v-bind:style="[baseStyles, overridingStyles]">菜鸟教程</div>4 K" O. L F; f6 F
- </div>
复制代码
/ w9 j; t+ \+ E0 W
$ Y$ Y- o) k0 L- ?) V7 p0 O( w注意:当 v-bind:style 使用需要特定前缀的 CSS 属性时,如 transform ,Vue.js 会自动侦测并添加相应的前缀。
F- J& k' T, b7 M9 H3 V1 g5 n" Q; _% ?6 q
' l M5 f. V6 J0 Y8 y$ r6 h
- ~/ T9 E3 J' ~- w& W
, i$ _+ F, N# M: f% b E1 @ |