class 的动态绑定

对象方法

最简单的绑定(这里的 active 加不加单引号都可以,以下也一样都能渲染)

:class="{ 'active': isActive }"

判断是否绑定一个 active

:class="{'active':isActive==-1}"
//或者
:class="{'active':isActive==index}"

绑定并判断多个

//第一种(用逗号隔开)
:class="{ 'active': isActive, 'sort': isSort }"

//第二种(放在data里面)
//也可以把后面绑定的对象写在一个变量放在data里面,可以变成下面这样
:class="classObject"
data() {
    return {
        classObject:{ active: true, sort:false }
    }
}

//第三种(使用computed属性)
:class="classObject"
data() {
    return {
        isActive: true,
        isSort: false
    }
},
computed: {
    classObject: function () {
        return {
            active: this.isActive,
            sort:this.isSort
        }
    }
}

数组方法

单纯数组

:class="[isActive,isSort]"
data() {
    return{
        isActive:'active',
        isSort:'sort'
    }
}

数组与三元运算符结合判断选择需要的 class

(注意:三元运算符后面的“:”两边的 class 需要加上单引号,否则不能正确渲染)

:class="[isActive?'active':'']"

或者

:class="[isActive==1?'active':'']"

或者

:class="[isActive==index?'active':'']"

或者

:class="[isActive==index?'active':'otherActiveClass']"

数组对象结合动态判断

前面这个 active 在对象里面可以不加单引号,后面这个 sort 要加单引号

:class="[{ active: isActive }, 'sort']"

或者

:class="[{ active: isActive==1 }, 'sort']"

或者

:class="[{ active: isActive==index }, 'sort']"

举个常用的例子

<template>
  <div
    :class="['timeSelectListBtn',{active: item.index == timeSelectList.active}]"
    @click="timeSelectItem(item.index)"
    v-for="(item,index) in timeSelectList.timeBtn"
    :key="index"
  >
    {{item.text}}
  </div>
</template>

<script>
  export default {
    data() {
      return {
        //定义一个列表,然后通过active来判断选中的是哪个
        timeSelectList: {
          active: 2,
          timeBtn: [
            {
              index: 1,
              text: "近7天",
            },
            {
              index: 2,
              text: "近30天",
            },
            {
              index: 3,
              text: "近半年",
            },
            {
              index: 4,
              text: "近一年",
            },
            {
              index: 5,
              text: "自定义",
            },
          ],
        },
      }
    },
    methods: {
      timeSelectItem(e) {
        this.timeSelectList.active = e
      },
    },
  }
</script>

<style lang="less" scoped>
  .timeSelectListBtn {
    //写普通的样式
  }
  .timeSelectListBtn.active {
    //写一些被选中的样式
  }
</style>