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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

+ r* Y0 }( @1 g2 g3 u6 D2 r" R. h1 r; e
  1. <div v-bind:class="{ active: isActive }"></div>
复制代码
以上实例 div class 为:* Y( t* k7 F/ C( D
  1. <div class="active"></div>
复制代码
我们也可以在对象中传入更多属性用来动态切换多个 class 。
实例 2
text-danger 类背景颜色覆盖了 active 类的背景色:

9 D2 f/ t: @/ G, f+ {9 G8 D; {4 Q( A/ I5 A5 @+ x! h
  1. <div class="static"
    & K- b0 c# B) L6 T' l! O1 |' ]
  2.      v-bind:class="{ active: isActive, 'text-danger': hasError }">
    , c& s% |$ h: S5 X1 C
  3. </div>
复制代码
以上实例 div class 为:
, V5 L7 Y: G) w' Z6 m4 f1 D! [
  1. <div class="static active text-danger"></div>
复制代码
我们也可以直接绑定数据里的一个对象:
实例 3
text-danger 类背景颜色覆盖了 active 类的背景色:
0 ~6 o1 E! d. v

) `* a! L- C8 e
  1. <div id="app">
    * J! Q' S( q& B4 [9 J0 Z& Q
  2.   <div v-bind:class="classObject"></div>
    ( i9 M: `1 j" l, a
  3. </div>
复制代码
实例 3 与 实例 2 的渲染结果是一样的。
此外,我们也可以在这里绑定返回对象的计算属性。这是一个常用且强大的模式:
实例 4
2 `% b+ @  r1 [" b$ F9 s6 v* X
2 x! Z# J8 v5 \9 Y; a% n1 U
  1. new Vue({
    # P& P4 b- q! V) l: L) m$ _2 p
  2.   el: '#app',
    1 y  y* ?* ?, b- L1 F- A
  3.   data: {5 A+ H2 i# R5 b6 L
  4.   isActive: true," q# r5 {8 S' P) _- W6 H4 `4 n
  5.   error: null
    1 Q6 f2 G& u+ W6 m1 H
  6.   },# j" f) ^  r, |, K/ z$ D. Z, Z- r
  7.   computed: {; p( T: d: B: H
  8.     classObject: function () {
    / D- o0 {' c( \3 I* k# \( ]
  9.       return {
    ! }- f5 n( g# t; Z4 m4 K& r, a
  10.         active: this.isActive && !this.error,
    ; p2 e+ ]0 U2 G; W
  11.         'text-danger': this.error && this.error.type === 'fatal',
    2 _5 P. \3 J! @: r* Q. g! V; v7 {
  12.       }7 I( U, J/ S, W/ n( A
  13.     }
    . q& Q# `9 O4 K5 y( V
  14.   }
    # J: W: _7 ]/ T& ?, k6 E7 {
  15. })
复制代码
数组语法
我们可以把一个数组传给 v-bind:class ,实例如下:
实例 5- l9 H: f4 U  r% U* \7 E
/ j5 d7 E$ o6 [0 Y
  1. <div v-bind:class="[activeClass, errorClass]"></div>
复制代码
以上实例 div class 为:
- I$ T; @. b% i
  1. <div class="active text-danger"></div>
复制代码
我们还可以使用三元表达式来切换列表中的 class :
实例 6
errorClass 是始终存在的,isActive 为 true 时添加 activeClass 类:

, ]9 T, @' y8 R3 E$ e( j! ?" f( N1 r
8 n# i, O/ p  Y
  1. <div v-bind:class="[errorClass ,isActive ? activeClass : '']"></div>
复制代码

$ N2 b6 _1 a7 Z3 B+ b; O
$ r% E4 j# ^# O( ]( W- ~' OVue.js style(内联样式)
我们可以在 v-bind:style 直接设置样式:
实例 7
1 x* Y) ~- x& X( D+ o9 B8 p; D2 N/ R! M
  1. <div id="app">
    : {6 W% i+ B* M, ]; Q; p+ n( O
  2.     <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">菜鸟教程</div>- X* s0 Y1 k; R
  3. </div>
复制代码
以上实例 div style 为:9 Q. q6 K5 Z& P& K* |* h
  1. <div style="color: green; font-size: 30px;">菜鸟教程</div>
复制代码
也可以直接绑定到一个样式对象,让模板更清晰:
实例 8
# y) A* j6 J. B
5 f" n9 `) L0 D1 i
  1. <div id="app">$ K. A9 L7 c3 }0 f4 Q4 ?
  2.   <div v-bind:style="styleObject">菜鸟教程</div>6 H6 s) F9 p9 i5 t
  3. </div>
复制代码
v-bind:style 可以使用数组将多个样式对象应用到一个元素上:
实例 9! f# R; ?' n5 e8 C4 b" P% N

' a+ w' A8 r% ?5 N( U% C
  1. <div id="app">' o- u' j, U" ?; n
  2.   <div v-bind:style="[baseStyles, overridingStyles]">菜鸟教程</div>
    & @+ Q+ ^4 {3 m
  3. </div>
复制代码
; {! e! W$ y1 T" h5 K) j" t
# j3 S. D6 L* U# ?5 g9 q
注意:当 v-bind:style 使用需要特定前缀的 CSS 属性时,如 transform ,Vue.js 会自动侦测并添加相应的前缀。
  D3 M9 y) b: @( p/ G4 c- k- ~" S) H- d$ }$ D$ J
1 z1 c$ ]8 N! ?

6 f# n5 o+ |# b# {( \9 H5 b: N' K1 J
, E; p8 T9 G" f3 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:06 , Processed in 0.051282 second(s), 19 queries .

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