最近在作些小程序轉Vue相關的工做,裏面有很多涉及到style和class綁定的,爲了避免至於用亂,我把小程序和Vue綁定方式都羅列了一下。
小程序裏面的class與style綁定,遵循HTML特性綁定,有關於HTML綁定,我在上一篇文章中有總結過,可點擊查看。在進行class與style綁定時,能夠直接綁定,也能夠帶上邏輯與,或者三元運算進行條件控制小程序
JS
data: {
dClass: 'my-class',
dClass1: 'my-class1',
dClass2: 'my-class2',
dClass3: 'my-class3',
dStyle: 'color:red;'
}
WXML
<view class="{{dClass}}"></view>
<view class="{{truthy ? dClass1 : dClass2}}"></view>
<view class="{{truthy && dClass3}}"></view>
<view style="{{dStyle}}"></view>
複製代碼
在Vue裏面,class與style綁定一樣遵循着HTML綁定,咱們只須要經過表達式計算出字符串便可,表達式結果的類型除了字符串以外,還能夠是對象和數組。數組
JS
data() {
return {
dClass: 'my-class'
}
}
HTML
<div :class="dClass"></div>
複製代碼
JS
data() {
return {
showC1: true,
showC2: true,
showC3: true
}
}
HTML
<div :class="{class1: showC1}"></div>
<div :class="{'class-2': showC2, 'class-3': showC3}"></div>
複製代碼
:class指令能夠與普通的class屬性共存,若是你打算不管如何都要添加一個class,放置到普通的class屬性中便可,好比:bash
JS
data() {
return {
showC1: true
}
}
HTML
<div class="static" :class="{class1: showC1}"></div>
複製代碼
綁定的數據能夠直接定義在data裏面,好比:post
JS
data() {
return {
classObj: {
'class-1': true,
'class-2': false,
'class-3': true
}
}
}
HTML
<div :class="classObj"></div>
複製代碼
綁定一個返回對象的計算屬性,好比:ui
JS
data() {
return {
classObj: {
'class-1': true,
'class-2': false
}
}
}
HTML
<div :class="classObj"></div>
複製代碼
JS
data() {
return {
activeClass: 'active',
errorClass: 'error'
}
}
HTML
<div :class="[activeClass, errorClass]"></div>
複製代碼
使用三元表達式切換列表中的class,好比:spa
JS
data() {
return {
showC1: true
}
}
HTML
<div :class="[showC1 ? 'class-1' : '']"></div>
複製代碼
老是添加一個class:code
JS
data() {
return {
showC1: true
}
}
HTML
<div :class="[showC1 ? 'class-1' : '', 'class-2']"></div>
複製代碼
在數組中使用對象語法:cdn
JS
data() {
return {
showC1: true
}
}
HTML
<div :class="[{'class-1': showC1}, 'class-2']"></div>
複製代碼
JS
data() {
return {
activeColor: 'red',
fontSize: 30
}
}
HTML
<div :style="{color: activeColor, fontSize: fontSize + 'px'}"></div>
複製代碼
直接綁定一個樣式對象,CSS 屬性名能夠用駝峯式 (camelCase) 或短橫線分隔 (kebab-case,記得用單引號括起來) 來命名:對象
JS
data() {
return {
styleObj: {
'background-color': 'red',
fontSize: '30px'
}
}
}
HTML
<div :style="styleObj"></div>
複製代碼
JS
data() {
return {
selfObj: {
width: '100px',
height: '50px'
},
childObj: {
backgroundColor: 'red',
'font-size': '30px'
}
}
}
HTML
<div :style="[selfObj, childObj]"></div>
複製代碼