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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-7-4 11:12:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
" @4 q' b2 |: ^. J2 `
Vue.js class
class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性。
Vue.js v-bind 在处理 class 和 style 时, 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。

class 属性绑定
我们可以为 v-bind:class 设置一个对象,从而动态的切换 class:
实例 1
实例中将 isActive 设置为 true 显示了一个绿色的 div 块,如果设置为 false 则不显示:
$ v$ b6 Y1 R9 s; u% \2 b. q

: H; |8 z/ s7 e1 Y+ O* E
  1. <div v-bind:class="{ active: isActive }"></div>
复制代码
以上实例 div class 为:
0 R2 R9 k% k# d* I  y
  1. <div class="active"></div>
复制代码
我们也可以在对象中传入更多属性用来动态切换多个 class 。
实例 2
text-danger 类背景颜色覆盖了 active 类的背景色:

  Z- }* `8 r/ l( l
$ c" p1 |/ n- h# M  \
  1. <div class="static"
    6 [% k1 H. H; i5 l
  2.      v-bind:class="{ active: isActive, 'text-danger': hasError }"># {) g0 k8 Z. h4 P( Y# R0 V' B% H5 [
  3. </div>
复制代码
以上实例 div class 为:5 I# M! s9 }3 v- z+ d1 |! D# ]$ U
  1. <div class="static active text-danger"></div>
复制代码
我们也可以直接绑定数据里的一个对象:
实例 3
text-danger 类背景颜色覆盖了 active 类的背景色:

* k5 Z. ~7 o% H
0 f9 _& o  r7 F0 z
  1. <div id="app">
    + y; j3 @0 Q! U8 }$ f) T' ?, N
  2.   <div v-bind:class="classObject"></div>( A( y6 l) }2 t( e5 Z# H/ O
  3. </div>
复制代码
实例 3 与 实例 2 的渲染结果是一样的。
此外,我们也可以在这里绑定返回对象的计算属性。这是一个常用且强大的模式:
实例 4
$ _( R' M$ n: u0 D# }" G5 m$ l  q+ s
2 U+ x2 {9 ]9 I1 i2 ~7 c
  1. new Vue({( E+ o  U; A9 M3 v8 k# n  d, U3 }
  2.   el: '#app',
    & S1 u+ \# }  Q
  3.   data: {
    + P- q0 p: @7 P
  4.   isActive: true,
    , Z9 r0 j9 L7 \
  5.   error: null" b: e3 K. Q1 G3 g' Q) L3 G
  6.   },
    ' {" O2 C1 }- q/ ~- k! ]* E! R. f
  7.   computed: {4 p& W) H9 B. T/ |
  8.     classObject: function () {( `1 C2 V! |9 H$ a5 ^
  9.       return {8 W2 z7 g5 Y2 [- T" h7 b
  10.         active: this.isActive && !this.error,
    . Y  I: @8 b( q
  11.         'text-danger': this.error && this.error.type === 'fatal',
    : @' H6 W# Q. X: h! n3 j1 A9 L
  12.       }
    7 _+ r& O5 d$ l
  13.     }
    . r! U: e( y2 {
  14.   }' F7 f; c1 p% z9 l* @; x
  15. })
复制代码
数组语法
我们可以把一个数组传给 v-bind:class ,实例如下:
实例 5" q3 K4 ]+ n; A

4 U+ _) K' U: [* `6 z
  1. <div v-bind:class="[activeClass, errorClass]"></div>
复制代码
以上实例 div class 为:- |" A! p5 S" ~3 n9 J, H( ^* j
  1. <div class="active text-danger"></div>
复制代码
我们还可以使用三元表达式来切换列表中的 class :
实例 6
errorClass 是始终存在的,isActive 为 true 时添加 activeClass 类:
7 Y4 @5 V  v5 |! F3 P7 v/ I

" x& G, S( r1 P, H/ v* }6 p9 \3 T; O
  1. <div v-bind:class="[errorClass ,isActive ? activeClass : '']"></div>
复制代码

- Y: c5 ~/ ~# x; R
! v" Z! ^3 U( ^/ D9 DVue.js style(内联样式)
我们可以在 v-bind:style 直接设置样式:
实例 7% R/ U7 N( P  `/ o
3 @: z$ p, a% O/ \9 f+ Q
  1. <div id="app">( I, a2 |+ Y1 d; |3 n
  2.     <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">菜鸟教程</div>7 [+ g( j6 b$ |  B1 W
  3. </div>
复制代码
以上实例 div style 为:
* T- c& m% I* N: v* q
  1. <div style="color: green; font-size: 30px;">菜鸟教程</div>
复制代码
也可以直接绑定到一个样式对象,让模板更清晰:
实例 8
& B6 ]- u% N2 U" q
* v  K# ?5 G/ n% p% `9 S
  1. <div id="app">. U* |; b! N- v4 B& W, v
  2.   <div v-bind:style="styleObject">菜鸟教程</div>
    5 @; m  ]2 x  n* V4 n7 b' w
  3. </div>
复制代码
v-bind:style 可以使用数组将多个样式对象应用到一个元素上:
实例 9- h$ B, I* i4 i' _) \/ \  x

1 L; T  b3 `5 s# r# F6 f' I; T
  1. <div id="app">. d: _; w6 D# M) F5 g9 T/ p
  2.   <div v-bind:style="[baseStyles, overridingStyles]">菜鸟教程</div>
    ) l' X( m/ I6 @7 t4 U6 z; P
  3. </div>
复制代码
2 Y8 _3 P4 t6 F

0 W# e4 i5 W8 x, T# d注意:当 v-bind:style 使用需要特定前缀的 CSS 属性时,如 transform ,Vue.js 会自动侦测并添加相应的前缀。! l) m5 H0 d; [# [, G
6 @4 R* ?& X) x1 J0 u$ i+ Q' B  W- x
: {. P4 F; r% q
2 ]# L, M! E3 ~, l1 p
7 }7 h, s0 I) M, }" b& _5 e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 15:53 , Processed in 0.056257 second(s), 19 queries .

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