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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

class 属性绑定
我们可以为 v-bind:class 设置一个对象,从而动态的切换 class:
实例 1
实例中将 isActive 设置为 true 显示了一个绿色的 div 块,如果设置为 false 则不显示:
7 F; f: z& \+ g2 n( g* K* d

4 _3 S$ r4 a' |3 g
  1. <div v-bind:class="{ active: isActive }"></div>
复制代码
以上实例 div class 为:
0 _* e, A* ^1 @/ ]9 f7 G' R
  1. <div class="active"></div>
复制代码
我们也可以在对象中传入更多属性用来动态切换多个 class 。
实例 2
text-danger 类背景颜色覆盖了 active 类的背景色:

( j3 l7 n; V$ S  e$ _3 k/ F6 ^9 N, B8 g4 D
  1. <div class="static"+ r/ V0 t- s6 B7 z. `
  2.      v-bind:class="{ active: isActive, 'text-danger': hasError }">  O7 N  ]! r# R
  3. </div>
复制代码
以上实例 div class 为:- X% [% g& W. P
  1. <div class="static active text-danger"></div>
复制代码
我们也可以直接绑定数据里的一个对象:
实例 3
text-danger 类背景颜色覆盖了 active 类的背景色:
. i2 ?' D  G* R$ }9 g9 s' s+ D
" M% j/ ?% b& e3 f' O2 u
  1. <div id="app">
    5 {/ \; t4 _( v5 ]9 K' r( T
  2.   <div v-bind:class="classObject"></div>
    , y' h; i$ R! _  s' w. {, q( c' w
  3. </div>
复制代码
实例 3 与 实例 2 的渲染结果是一样的。
此外,我们也可以在这里绑定返回对象的计算属性。这是一个常用且强大的模式:
实例 4  w: G3 i2 |3 O

; t& b% L# m- k; Y+ x% k
  1. new Vue({
    + N0 C/ _) j- X4 p. u
  2.   el: '#app',7 \1 K6 n% K$ w
  3.   data: {& n* T! B% Y. I% I8 b- ]) l4 R
  4.   isActive: true,
    ) l8 W' b# Z1 c9 x& |) W8 [
  5.   error: null; n% Z  Z/ s$ K
  6.   },
    ( Q# e) h, @* ]9 H/ M
  7.   computed: {  p* g, ?2 M) F* F0 }: m* Z
  8.     classObject: function () {; o/ R! e$ q8 A+ Q
  9.       return {' j) C! U8 J5 d' Z
  10.         active: this.isActive && !this.error," Y. |$ A/ r' J  L/ d  S- a
  11.         'text-danger': this.error && this.error.type === 'fatal',
    : N2 |# F  M+ R5 w* {
  12.       }
    : V4 I3 ^7 n5 t" I5 ?" f
  13.     }7 v; N4 m9 N8 j3 `. i  {' D$ H' [+ T
  14.   }
    & n: ^8 }0 f4 r! j+ t. q
  15. })
复制代码
数组语法
我们可以把一个数组传给 v-bind:class ,实例如下:
实例 5
9 u/ G" o" }$ Z9 o! A) m$ w# [; v+ h; w4 ]
  1. <div v-bind:class="[activeClass, errorClass]"></div>
复制代码
以上实例 div class 为:
. f2 h1 u- {1 A4 |! S/ b8 o
  1. <div class="active text-danger"></div>
复制代码
我们还可以使用三元表达式来切换列表中的 class :
实例 6
errorClass 是始终存在的,isActive 为 true 时添加 activeClass 类:
* g1 [0 K- W* B' m; L- g

4 ^& p7 B" t8 Z
  1. <div v-bind:class="[errorClass ,isActive ? activeClass : '']"></div>
复制代码
) F2 v6 z6 e, o/ `

) v6 s5 ^0 I+ l. dVue.js style(内联样式)
我们可以在 v-bind:style 直接设置样式:
实例 75 z/ O" D9 T/ ]6 e+ P: I) Z! [" b* i% W" v

/ {( [$ |4 Q" }3 x$ z$ h
  1. <div id="app">
    : V5 R+ w: U6 L2 M$ Y. a
  2.     <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">菜鸟教程</div>' Y& O8 |* G0 D0 l
  3. </div>
复制代码
以上实例 div style 为:2 g/ q  k3 A, q4 M" \! @
  1. <div style="color: green; font-size: 30px;">菜鸟教程</div>
复制代码
也可以直接绑定到一个样式对象,让模板更清晰:
实例 8
$ |5 G. a3 k4 U5 u
6 \8 {; q6 v! C: c; I; C! d
  1. <div id="app">
    " i$ f* W6 B9 O0 Q" C+ V, T
  2.   <div v-bind:style="styleObject">菜鸟教程</div>
    0 q1 l7 n1 C7 X; y- e
  3. </div>
复制代码
v-bind:style 可以使用数组将多个样式对象应用到一个元素上:
实例 97 d# l$ O( B! J
) l0 J9 M$ F- y0 D& X9 Q. T
  1. <div id="app">
    # u8 ]' H+ e  l) n/ x3 j& j1 H
  2.   <div v-bind:style="[baseStyles, overridingStyles]">菜鸟教程</div>
    0 a2 `% F8 k, A
  3. </div>
复制代码

! V1 i* M7 Y3 H3 }6 Z) X4 Z7 W! J& R- u; n* ~: l4 p4 d" d9 }
注意:当 v-bind:style 使用需要特定前缀的 CSS 属性时,如 transform ,Vue.js 会自动侦测并添加相应的前缀。4 T* M6 ?+ h( l7 n3 E: v: I
* w& r9 ^1 [: t
1 j9 ^8 [( v. K

" V; O3 s  g+ h6 V( f8 p+ I5 N2 g7 s' R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 19:03 , Processed in 0.058464 second(s), 21 queries .

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