cncml手绘网
标题: Vue.js 样式绑定 [打印本页]
作者: admin 时间: 2018-7-4 11:12
标题: Vue.js 样式绑定
; u& a8 B2 ^4 j/ n4 X5 X
Vue.js classclass 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性。
Vue.js v-bind 在处理 class 和 style 时, 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。
class 属性绑定我们可以为 v-bind:class 设置一个对象,从而动态的切换 class:
实例 1实例中将 isActive 设置为 true 显示了一个绿色的 div 块,如果设置为 false 则不显示:
2 O+ w* n2 j% F* C: N7 a$ y- E
* l% r( y5 A% a
- <div v-bind:class="{ active: isActive }"></div>
复制代码 以上实例 div class 为:
& ?$ A2 R7 S4 _2 S/ t2 ]8 g- <div class="active"></div>
复制代码我们也可以在对象中传入更多属性用来动态切换多个 class 。
实例 2text-danger 类背景颜色覆盖了 active 类的背景色:
1 T. y4 _; B9 u4 J
" x( e( H! `, @9 Z ?- <div class="static"! c; f, s1 \' ]
- v-bind:class="{ active: isActive, 'text-danger': hasError }">. f9 r$ g0 \8 C! `
- </div>
复制代码 以上实例 div class 为:
* n8 n# C4 ^) t1 G4 M- <div class="static active text-danger"></div>
复制代码我们也可以直接绑定数据里的一个对象:
实例 3text-danger 类背景颜色覆盖了 active 类的背景色:
; a7 D) Y. C& }* h- t/ x D9 R1 u8 v8 |6 ]$ r O$ ~6 J
- <div id="app">* x. p# D5 `# P* z
- <div v-bind:class="classObject"></div>3 h" G' X" o2 x5 L! N, `8 m, F
- </div>
复制代码实例 3 与 实例 2 的渲染结果是一样的。
此外,我们也可以在这里绑定返回对象的计算属性。这是一个常用且强大的模式:
实例 4
) _" i* h/ Z& @2 l$ n( x
8 \' V" {1 P0 w Y: g- new Vue({. P* t6 w# {3 U2 J; n3 V+ R2 }* j0 Q' l
- el: '#app',
& o, {/ @" j% B - data: {
3 q h \8 O% D6 w - isActive: true,) w( k) Y) N! {1 N
- error: null
$ I% w3 T: v+ H( m - },! M, l+ S! [' C! r. J! S
- computed: {
, Q _. D2 ]/ O: v7 {3 N2 c - classObject: function () {5 X9 }* u0 c& U1 t
- return {
3 M! o& C; F& t& t9 ~! s - active: this.isActive && !this.error,
$ T9 X' ?; d7 c2 L7 E! ~6 l - 'text-danger': this.error && this.error.type === 'fatal',
) K8 x% G) V! Z9 y) m: h! t - }
% V n) V. X* W - }
( ]3 K0 [8 u% I - }
: T( @3 r& ~. J* M - })
复制代码 数组语法我们可以把一个数组传给 v-bind:class ,实例如下:
实例 5
3 x( |! S, P$ ~0 z0 y5 A) u8 c1 |% g0 Y! Y7 u
- <div v-bind:class="[activeClass, errorClass]"></div>
复制代码 以上实例 div class 为:
7 F: x2 r" h/ F$ P. g1 J- <div class="active text-danger"></div>
复制代码我们还可以使用三元表达式来切换列表中的 class :
实例 6errorClass 是始终存在的,isActive 为 true 时添加 activeClass 类:
W' |$ h% r' | |! p- b( I
1 l1 m7 Q+ p3 X2 x/ w3 E2 S- <div v-bind:class="[errorClass ,isActive ? activeClass : '']"></div>
复制代码
/ R* L1 i( s6 V. c3 V
6 _1 P" @3 a0 i) i3 Y1 RVue.js style(内联样式)我们可以在 v-bind:style 直接设置样式:
实例 7% Z) Z) C7 s0 A) L+ L6 Q" ^9 K
# z, q+ e" U# g
- <div id="app">
* _! |5 _- |2 C/ `1 | m2 a* y - <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">菜鸟教程</div>
6 x! V# m% \3 v- _5 _- z - </div>
复制代码 以上实例 div style 为:
- R! ~/ q, i$ p+ j* ?( F* w- <div style="color: green; font-size: 30px;">菜鸟教程</div>
复制代码也可以直接绑定到一个样式对象,让模板更清晰:
实例 8; {+ V: R9 v6 P/ Q, P" i1 X' ?
( y* P4 I- O) {1 z) s! T# `: M: N0 V
- <div id="app">( `( L8 W9 ?+ @) b
- <div v-bind:style="styleObject">菜鸟教程</div>
X4 ~; t& ]9 c$ V) e/ @. _ - </div>
复制代码v-bind:style 可以使用数组将多个样式对象应用到一个元素上:
实例 98 [. _+ s! N6 `6 ^: D( f
3 J. D' f( l- r1 Q0 u- <div id="app">
8 Z; C! F r& u! I$ C! Z& t3 J - <div v-bind:style="[baseStyles, overridingStyles]">菜鸟教程</div>3 x% u5 b5 o; |
- </div>
复制代码 , e6 J. f0 }6 ?1 I
* e7 V* ^8 D% G4 E0 F2 c6 b
注意:当 v-bind:style 使用需要特定前缀的 CSS 属性时,如 transform ,Vue.js 会自动侦测并添加相应的前缀。
( T6 _# T- r1 q4 ^* p1 L7 s! `3 a' d) [* [1 L: C
8 U- t1 S2 J9 K6 a' [: o- n* z! k& x# J# {' l5 Z: b) Z" \
; U* T3 v5 i4 b _9 M
| 欢迎光临 cncml手绘网 (http://www.cncml.com/) |
Powered by Discuz! X3.2 |