cncml手绘网
标题: Vue.js 样式绑定 [打印本页]
作者: admin 时间: 2018-7-4 11:12
标题: Vue.js 样式绑定
' D0 A$ I% }) ^" T
Vue.js classclass 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性。
Vue.js v-bind 在处理 class 和 style 时, 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。
class 属性绑定我们可以为 v-bind:class 设置一个对象,从而动态的切换 class:
实例 1实例中将 isActive 设置为 true 显示了一个绿色的 div 块,如果设置为 false 则不显示:
+ I( o" O3 w0 g& p# z% _
2 v% x: c. k5 k5 A# U- n" d/ t
- <div v-bind:class="{ active: isActive }"></div>
复制代码 以上实例 div class 为:: A9 @5 ^$ Y+ W6 f" G7 I8 m- V* q
- <div class="active"></div>
复制代码我们也可以在对象中传入更多属性用来动态切换多个 class 。
实例 2text-danger 类背景颜色覆盖了 active 类的背景色:
% H( l7 H+ y1 x, C; e1 `! u9 x) {$ w: ?9 S, R
- <div class="static"/ \9 S7 b* J a3 _- k
- v-bind:class="{ active: isActive, 'text-danger': hasError }">) g! e3 V/ _; P c0 Q
- </div>
复制代码 以上实例 div class 为:# U% q3 V/ ~ S8 D( \6 A: K: b; W
- <div class="static active text-danger"></div>
复制代码我们也可以直接绑定数据里的一个对象:
实例 3text-danger 类背景颜色覆盖了 active 类的背景色:
0 s/ {2 D. @9 h Z+ i! N; c
+ s z4 H0 n% F2 p4 E- <div id="app">
6 Z' ^/ I4 |- _' y' S - <div v-bind:class="classObject"></div>6 [4 M, t/ L$ S
- </div>
复制代码实例 3 与 实例 2 的渲染结果是一样的。
此外,我们也可以在这里绑定返回对象的计算属性。这是一个常用且强大的模式:
实例 44 |' k! {6 _* u" N$ o
7 V0 r8 M. e7 w# U& F S
- new Vue({( v7 q& X/ I. H; _- g
- el: '#app',& \* E |6 x5 ^9 j0 E
- data: {% L' U9 U% e1 E9 y: C5 j6 w
- isActive: true,
* ~9 p0 n$ w! k6 p1 G! H7 b5 z- X - error: null+ d/ @) E8 C5 x* \
- },6 x4 }* s; G- a+ O
- computed: {
$ X* X7 q5 G- A( m6 r! t - classObject: function () {
0 f5 o/ z/ ]# b2 I1 ?2 ? - return {
$ A+ A# M0 M D _0 V, M/ E - active: this.isActive && !this.error,
R" O& W0 c/ r( X+ l( X - 'text-danger': this.error && this.error.type === 'fatal',
9 L/ Y8 U% J* Z/ K/ m. I - }
1 W6 g1 ^" h; Y" W* ~& T - }+ g& k6 ^+ r7 a2 x! w
- }
- i3 b ]# o) }( \ j - })
复制代码 数组语法我们可以把一个数组传给 v-bind:class ,实例如下:
实例 5
. G! H L+ }" L! ~) b/ Y0 }8 D+ `& A0 b
- <div v-bind:class="[activeClass, errorClass]"></div>
复制代码 以上实例 div class 为:
: {' b1 R$ p) h- t3 U7 t- <div class="active text-danger"></div>
复制代码我们还可以使用三元表达式来切换列表中的 class :
实例 6errorClass 是始终存在的,isActive 为 true 时添加 activeClass 类:
3 K9 L+ f8 u( E! u; _6 ^# C V
' d$ _- n+ L1 |( e- <div v-bind:class="[errorClass ,isActive ? activeClass : '']"></div>
复制代码 - u6 Z+ H. t( c/ S) ~
- x5 |: x: `% ~* a; A$ u% r$ e
Vue.js style(内联样式)我们可以在 v-bind:style 直接设置样式:
实例 7
" F6 S r8 |: g
5 {4 N/ M5 v4 n! I1 t' z- <div id="app">5 O) }* ~' c! O t$ H' r
- <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">菜鸟教程</div>
- `& A4 s1 Q9 T - </div>
复制代码 以上实例 div style 为:
v3 ^( C, W- R. H; C( Y- d3 C- <div style="color: green; font-size: 30px;">菜鸟教程</div>
复制代码也可以直接绑定到一个样式对象,让模板更清晰:
实例 8
. ~, _; J9 [% S# M1 X, S5 o8 |
6 G8 T M$ h" S3 E9 z8 X- <div id="app">7 w+ V O. M. z7 }# S
- <div v-bind:style="styleObject">菜鸟教程</div>
; y) |: ]" b' Z4 w0 U, D; | - </div>
复制代码v-bind:style 可以使用数组将多个样式对象应用到一个元素上:
实例 9
' ~2 H$ ^3 _7 V' X# H7 y9 Z5 D
2 D; ]2 s$ [% k6 f7 O- <div id="app">
$ S) c" O/ h; Q1 D8 h% D. ]& l - <div v-bind:style="[baseStyles, overridingStyles]">菜鸟教程</div>! b8 l; } X% X% V S
- </div>
复制代码
6 u' G) H3 p' V3 y t( j- L" t2 }# B. p# U7 G f% {
注意:当 v-bind:style 使用需要特定前缀的 CSS 属性时,如 transform ,Vue.js 会自动侦测并添加相应的前缀。3 `: o' E1 N. w& S& u
" U8 u, s8 w* c; b
6 E4 Z* w) g+ o/ x |! t8 k% F7 v
Q, E3 @- B- c* p6 c1 D9 X- ?1 B. ?0 B% X
| 欢迎光临 cncml手绘网 (http://bbs.cncml.com/) |
Powered by Discuz! X3.2 |