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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

class 属性绑定
我们可以为 v-bind:class 设置一个对象,从而动态的切换 class:
实例 1
实例中将 isActive 设置为 true 显示了一个绿色的 div 块,如果设置为 false 则不显示:
* k/ I) L5 O# b: ?* C* p
9 f7 }4 H/ Y$ v) w; w
  1. <div v-bind:class="{ active: isActive }"></div>
复制代码
以上实例 div class 为:
; C5 ^4 }# G$ U
  1. <div class="active"></div>
复制代码
我们也可以在对象中传入更多属性用来动态切换多个 class 。
实例 2
text-danger 类背景颜色覆盖了 active 类的背景色:
, I6 ]; }/ x+ }  o; s0 t

5 U6 f! v+ h. U! l
  1. <div class="static"
    + K9 T$ q; X* L
  2.      v-bind:class="{ active: isActive, 'text-danger': hasError }"># |' V, |3 O7 k2 D+ ]& m
  3. </div>
复制代码
以上实例 div class 为:
5 [& N2 j- @$ R+ T
  1. <div class="static active text-danger"></div>
复制代码
我们也可以直接绑定数据里的一个对象:
实例 3
text-danger 类背景颜色覆盖了 active 类的背景色:

# x$ D. V  @4 [8 y" ^6 }
3 ?1 {7 w+ r" N* _: a
  1. <div id="app">9 o' A4 F  O$ \, y& a
  2.   <div v-bind:class="classObject"></div>' K% _: ~% e; r8 Y2 ], U% Z* d
  3. </div>
复制代码
实例 3 与 实例 2 的渲染结果是一样的。
此外,我们也可以在这里绑定返回对象的计算属性。这是一个常用且强大的模式:
实例 4( o) w- E/ N: w3 m0 v- Q
0 S  U3 e2 v: H
  1. new Vue({
    6 L9 K- |  `* W8 B
  2.   el: '#app',* O+ n% c- x0 c7 l
  3.   data: {
    3 o  Q6 V. c6 @9 Q3 u. U, H+ ~
  4.   isActive: true,
    1 i% x% B$ \6 `+ I5 F4 x  v/ k
  5.   error: null$ G' C) y# ~7 g, b
  6.   },  o" B: G: g6 t1 K
  7.   computed: {
    . L  E0 G% o6 c8 c- Z7 `
  8.     classObject: function () {
    5 W5 Q2 ?) b! `+ V' x
  9.       return {( f: |' s4 d3 F. Y: M. D- T! W
  10.         active: this.isActive && !this.error,
    3 U( C0 _2 Y, \
  11.         'text-danger': this.error && this.error.type === 'fatal',
    ; x) k' [; o# F  T* T7 t5 [0 I
  12.       }
    ! Z. V; j: }% K- Y) G
  13.     }
    # q8 T: Q$ }% P8 C* L1 b2 y
  14.   }( B! w2 x5 G5 n8 R% x- `
  15. })
复制代码
数组语法
我们可以把一个数组传给 v-bind:class ,实例如下:
实例 57 q% e7 g( _! m! V9 ^  U

( y1 q+ J) I  a# N
  1. <div v-bind:class="[activeClass, errorClass]"></div>
复制代码
以上实例 div class 为:3 A) w- s8 @1 m% W8 s
  1. <div class="active text-danger"></div>
复制代码
我们还可以使用三元表达式来切换列表中的 class :
实例 6
errorClass 是始终存在的,isActive 为 true 时添加 activeClass 类:

6 I" r3 u/ u8 Q' H4 ?3 z% v. E% i+ G
  1. <div v-bind:class="[errorClass ,isActive ? activeClass : '']"></div>
复制代码
: k1 @8 {& t. e

$ _: p  r7 f2 _0 \Vue.js style(内联样式)
我们可以在 v-bind:style 直接设置样式:
实例 70 Y) I; H1 S& p5 e

) c4 q3 n2 j6 {
  1. <div id="app">/ }9 Q0 j; R# I" V+ ]: T
  2.     <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">菜鸟教程</div>
    3 E$ S. B- ~7 g! o
  3. </div>
复制代码
以上实例 div style 为:
9 I* t9 K; c6 Y  P5 W, e3 m
  1. <div style="color: green; font-size: 30px;">菜鸟教程</div>
复制代码
也可以直接绑定到一个样式对象,让模板更清晰:
实例 86 V# Z, ?5 s1 w0 P: P" a# y& s
9 \8 x2 k) ^- a; f2 `; v
  1. <div id="app">
    6 @+ h/ E3 J( S4 O* o7 P
  2.   <div v-bind:style="styleObject">菜鸟教程</div>  s2 H# i3 j9 G. d) p/ E% o
  3. </div>
复制代码
v-bind:style 可以使用数组将多个样式对象应用到一个元素上:
实例 9& L- p" Y" e: A& S8 D
  b' d' r9 H  ?; J# v/ x
  1. <div id="app">0 ?9 ]; k3 C0 |5 O" D
  2.   <div v-bind:style="[baseStyles, overridingStyles]">菜鸟教程</div>1 v' r6 _" ]7 ^) L
  3. </div>
复制代码
$ P. x8 X& t+ d9 \% z

: H* }  O+ V0 Z" T5 s注意:当 v-bind:style 使用需要特定前缀的 CSS 属性时,如 transform ,Vue.js 会自动侦测并添加相应的前缀。
; k* D& y/ q- i2 r* S4 [1 ^
8 U+ y' R! N7 ~* O. v
/ @6 U- }& p, B* O3 s% q( L3 T0 Z! v8 H
- m3 F- N6 h) T# ~2 I0 ?% ?) k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 03:11 , Processed in 0.054209 second(s), 20 queries .

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