您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15729|回复: 0
打印 上一主题 下一主题

[Vue.js] Vue.js 样式绑定

[复制链接]
跳转到指定楼层
楼主
发表于 2018-7-4 11:12:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

class 属性绑定
我们可以为 v-bind:class 设置一个对象,从而动态的切换 class:
实例 1
实例中将 isActive 设置为 true 显示了一个绿色的 div 块,如果设置为 false 则不显示:

3 S: U  K0 e+ b2 W8 L0 E
' h/ Z" o/ f0 ]; u/ E4 Q
  1. <div v-bind:class="{ active: isActive }"></div>
复制代码
以上实例 div class 为:
" ~5 g. J( ?; Q6 `. S% ?3 V7 h
  1. <div class="active"></div>
复制代码
我们也可以在对象中传入更多属性用来动态切换多个 class 。
实例 2
text-danger 类背景颜色覆盖了 active 类的背景色:
* E9 A, x# W+ ?" S

3 N7 j1 z1 c/ o& j  z
  1. <div class="static"4 Z2 ]0 e2 v: ~( z5 Y
  2.      v-bind:class="{ active: isActive, 'text-danger': hasError }">, q; v4 ?4 v$ k1 Z) `7 t  T
  3. </div>
复制代码
以上实例 div class 为:* v" V: P8 a. n$ c' ^
  1. <div class="static active text-danger"></div>
复制代码
我们也可以直接绑定数据里的一个对象:
实例 3
text-danger 类背景颜色覆盖了 active 类的背景色:
( ?! l5 g- f& e2 z
+ p, z4 s- M7 Z: x
  1. <div id="app">/ \6 v" T6 W( O' f5 I0 j
  2.   <div v-bind:class="classObject"></div>
    : K9 H) \6 S6 v% f
  3. </div>
复制代码
实例 3 与 实例 2 的渲染结果是一样的。
此外,我们也可以在这里绑定返回对象的计算属性。这是一个常用且强大的模式:
实例 4
* Y& o3 ~$ F7 d& U+ V: N3 H9 q
. m, U! x+ }8 x. f3 [" [: y
  1. new Vue({! _/ j5 Y2 l  S% p/ N3 w
  2.   el: '#app'," _5 q8 k( C! Q3 q5 f8 J8 j
  3.   data: {( n/ \  V  x3 k& _0 M: b
  4.   isActive: true,
    6 X6 v! w3 L9 @& {
  5.   error: null5 w9 V' z: N) W) E6 L4 W
  6.   },
    ! T! F; T6 R$ |
  7.   computed: {
    + y  @) l* I2 ?7 q7 |- B: a6 a
  8.     classObject: function () {4 X' G& `) d- h" Y
  9.       return {
    $ K" a8 {( d2 \2 v0 c- f5 s
  10.         active: this.isActive && !this.error,
    " J9 m; X% Z; a3 t+ d
  11.         'text-danger': this.error && this.error.type === 'fatal',
    , _+ T$ T* m& v4 V) p2 ^& L
  12.       }
    ! c0 c% z( S3 u2 z, X
  13.     }
    5 j, `) W& l' g7 I; I. m7 k* a
  14.   }2 t7 T) e5 Y0 j* Q; a" p: p( B
  15. })
复制代码
数组语法
我们可以把一个数组传给 v-bind:class ,实例如下:
实例 53 p9 J) T8 w% N* W! W# }
& t  {3 n3 I* c1 T# G! U
  1. <div v-bind:class="[activeClass, errorClass]"></div>
复制代码
以上实例 div class 为:0 G3 j3 l/ o  E
  1. <div class="active text-danger"></div>
复制代码
我们还可以使用三元表达式来切换列表中的 class :
实例 6
errorClass 是始终存在的,isActive 为 true 时添加 activeClass 类:
& I1 L  O0 y6 @8 x' \7 k! M: t& w

1 o+ F) [6 ?) p- d, }* P2 h# y7 _
  1. <div v-bind:class="[errorClass ,isActive ? activeClass : '']"></div>
复制代码
, [$ T# a0 ?8 W3 T' H! @! f

# a$ V# O1 a) f+ D) z: ?Vue.js style(内联样式)
我们可以在 v-bind:style 直接设置样式:
实例 7
6 R/ E  l( l) Z( ]2 c
. }, z* c/ p& n8 y
  1. <div id="app">3 ]7 L; W6 e: @6 k! q, a
  2.     <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">菜鸟教程</div>
    9 N$ g1 @: ]. ^3 P8 X  R
  3. </div>
复制代码
以上实例 div style 为:
7 J0 J$ N2 U# P  f5 _+ J
  1. <div style="color: green; font-size: 30px;">菜鸟教程</div>
复制代码
也可以直接绑定到一个样式对象,让模板更清晰:
实例 86 u) i/ a( ^. l5 u. t

4 G2 V+ a' h! k1 Z
  1. <div id="app">3 e4 ]6 ]* c; {
  2.   <div v-bind:style="styleObject">菜鸟教程</div>$ M6 P8 k& Z1 Q) ?
  3. </div>
复制代码
v-bind:style 可以使用数组将多个样式对象应用到一个元素上:
实例 9
* ~, h# t$ h4 M! B7 |5 ]. ]- s) W2 T0 R
  1. <div id="app">
    8 d" E. J$ A. Y% E0 U, |
  2.   <div v-bind:style="[baseStyles, overridingStyles]">菜鸟教程</div>
    , E* \5 s3 A' y8 l& S
  3. </div>
复制代码
7 ?  j" G4 {! D; I+ b, F
! [& \: J, ?; f( |% f5 p
注意:当 v-bind:style 使用需要特定前缀的 CSS 属性时,如 transform ,Vue.js 会自动侦测并添加相应的前缀。5 ~. ~5 x! @" Q4 j# a
3 V* \: e7 e) |5 @

% K& I6 f% ]+ O0 i  B
! w6 _; E' c, y2 Q) f
. K9 i- E/ R) X0 e  T: c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-20 03:25 , Processed in 0.074982 second(s), 21 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!