cncml手绘网

标题: Vue.js 样式绑定 [打印本页]

作者: admin    时间: 2018-7-4 11:12
标题: Vue.js 样式绑定

; y4 K8 n! k4 q' jVue.js class
class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性。
Vue.js v-bind 在处理 class 和 style 时, 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。

class 属性绑定
我们可以为 v-bind:class 设置一个对象,从而动态的切换 class:
实例 1
实例中将 isActive 设置为 true 显示了一个绿色的 div 块,如果设置为 false 则不显示:
4 h5 J  s# ]2 f, M" j& O6 G* y
' t' ?3 S- k' E+ J4 K
  1. <div v-bind:class="{ active: isActive }"></div>
复制代码
以上实例 div class 为:
( n5 T# w. _$ N8 t/ [2 Y
  1. <div class="active"></div>
复制代码
我们也可以在对象中传入更多属性用来动态切换多个 class 。
实例 2
text-danger 类背景颜色覆盖了 active 类的背景色:
5 M/ S3 X# t" Q3 N& ^
0 M& T$ d1 y5 B: b+ M! @# V: w# V
  1. <div class="static"$ E) i1 g4 Y# ~7 N/ ^0 E% N
  2.      v-bind:class="{ active: isActive, 'text-danger': hasError }">; L: x) V  v& o% h* Z- v2 N! i
  3. </div>
复制代码
以上实例 div class 为:
* z; n& m& v. C1 Q7 h5 ]) @
  1. <div class="static active text-danger"></div>
复制代码
我们也可以直接绑定数据里的一个对象:
实例 3
text-danger 类背景颜色覆盖了 active 类的背景色:
  ^' p/ o) V1 B

$ V; t2 Q6 p8 J2 R- U& F/ N
  1. <div id="app">
    8 h" _4 S9 T) l; w+ t1 Y
  2.   <div v-bind:class="classObject"></div>! J6 m0 V. X- b- O: S9 n" w7 l
  3. </div>
复制代码
实例 3 与 实例 2 的渲染结果是一样的。
此外,我们也可以在这里绑定返回对象的计算属性。这是一个常用且强大的模式:
实例 43 d. ]2 ^7 Y& K, V# I5 ]
* g- @& s$ G+ }. a7 W% M
  1. new Vue({5 m. P% G* H/ ?6 o; G
  2.   el: '#app',8 ~# \4 P, }$ i4 y, C
  3.   data: {
    ) p/ h: @  c* a. F1 S/ l' |
  4.   isActive: true,
    ) t5 v) m7 ~  G; n$ v) N- Q
  5.   error: null
    . N+ _/ y! Y- r9 q% {# w9 A
  6.   },
    , y# ~+ t, e9 ?( A* w
  7.   computed: {% U; @# q( H+ @: h
  8.     classObject: function () {! E2 ^+ }* \5 R/ n( ?4 D* w" a1 ?
  9.       return {6 C, X3 s( c; ?! B* Z8 f
  10.         active: this.isActive && !this.error,. L7 [& [- T/ ?2 c3 F' O
  11.         'text-danger': this.error && this.error.type === 'fatal',
    + K) p. }7 j& T% E) m* s
  12.       }; ]8 G  \1 }+ x8 p3 u$ T
  13.     }
    1 W3 B  j0 w/ T+ x4 |; S
  14.   }
      L" X! E$ @4 O
  15. })
复制代码
数组语法
我们可以把一个数组传给 v-bind:class ,实例如下:
实例 5
; |5 o6 V+ u& p! f+ A4 L. G; e. d0 K
  1. <div v-bind:class="[activeClass, errorClass]"></div>
复制代码
以上实例 div class 为:
% j( A! @. l- J, v# r) `" ]3 [! v  |
  1. <div class="active text-danger"></div>
复制代码
我们还可以使用三元表达式来切换列表中的 class :
实例 6
errorClass 是始终存在的,isActive 为 true 时添加 activeClass 类:
4 P* t, A5 w" G, X3 K8 X& S4 G' M
4 h. p7 [0 s& m" M3 E* ^
  1. <div v-bind:class="[errorClass ,isActive ? activeClass : '']"></div>
复制代码
3 K; ?0 l" H: z& }# G# _5 z% c

( _2 e0 W7 r" Y8 ]3 O# N" PVue.js style(内联样式)
我们可以在 v-bind:style 直接设置样式:
实例 7
! C' o' C. O- a8 \. w! B$ ^" |+ _9 D& q2 U# |/ N3 u" r4 n
  1. <div id="app">6 {' V, D3 z$ |" O2 A2 b
  2.     <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">菜鸟教程</div>
    $ ~( N: y4 ~- c  x4 z$ A
  3. </div>
复制代码
以上实例 div style 为:
. t4 q) G3 l4 j
  1. <div style="color: green; font-size: 30px;">菜鸟教程</div>
复制代码
也可以直接绑定到一个样式对象,让模板更清晰:
实例 8( B* ]9 R9 m! u. E% r

* q: O) D9 d9 v! A; f: S
  1. <div id="app">, o: Y# e9 t' w0 u# r& C7 a
  2.   <div v-bind:style="styleObject">菜鸟教程</div>. T. x& m$ B0 ]7 q9 k
  3. </div>
复制代码
v-bind:style 可以使用数组将多个样式对象应用到一个元素上:
实例 94 e) L* A& y/ P7 t; z

1 }- Q3 b( V+ K; n
  1. <div id="app">
    1 a6 q) U, }2 Q( N
  2.   <div v-bind:style="[baseStyles, overridingStyles]">菜鸟教程</div>1 t; \, B& D1 Y4 O
  3. </div>
复制代码
! b9 [! X7 w) `( i
2 x/ u2 Z/ @$ D1 T
注意:当 v-bind:style 使用需要特定前缀的 CSS 属性时,如 transform ,Vue.js 会自动侦测并添加相应的前缀。, v9 G9 f. k5 L

/ D- p1 o9 F9 s0 Z1 g
. Q; ]7 H3 o6 h- F( H, _2 T; q6 O2 Q2 L8 Z5 `7 @2 ?8 s
4 h/ S* H) A7 U! I





欢迎光临 cncml手绘网 (http://bbs.cncml.com/) Powered by Discuz! X3.2