<div id="root">
  <!-- 绑定class样式--字符串写法,适用于:样式的类名不确定,需要动态指定 -->
  <div class="basic" :class="mood" @click="changeMood">{{name}}</div> <br /><br />

  <!-- 绑定class样式--数组写法,适用于:要绑定的样式个数不确定、名字也不确定 -->
  <div class="basic" :class="classArr">{{name}}</div> <br /><br />

  <!-- 绑定class样式--对象写法,适用于:要绑定的样式个数确定、名字也确定,但要动态决定用不用 -->
  <div class="basic" :class="classObj">{{name}}</div> <br /><br />

  <!-- 绑定style样式--对象写法 -->
  <div class="basic" :style="styleObj">{{name}}</div> <br /><br />
  <!-- 绑定style样式--数组写法 -->
  <div class="basic" :style="styleArr">{{name}}</div>
</div>
.basic {
  width: 400px;
  height: 100px;
  border: 1px solid black;
}

.happy {
  border: 4px solid red;
  background-color: #ffff00a4;
  background: linear-gradient(30deg, yellow, pink, orange, yellow);
}
.sad {
  border: 4px dashed #02c502;
  background-color: gray;
}
.normal {
  background-color: skyblue;
}

.atguigu1 {
  background-color: yellowgreen;
}
.atguigu2 {
  font-size: 30px;
  text-shadow: 2px 2px 10px red;
}
.atguigu3 {
  border-radius: 20px;
}
Vue.config.productionTip = false;

const vm = new Vue({
  el: "#root",
  data: {
    name: "尚硅谷",
    mood: "normal",
    classArr: ["atguigu1", "atguigu2", "atguigu3"],
    classObj: {
      atguigu1: false,
      atguigu2: false
    },
    styleObj: {
      fontSize: "40px",
      color: "red"
    },
    styleObj2: {
      backgroundColor: "orange"
    },
    styleArr: [
      {
        fontSize: "40px",
        color: "blue"
      },
      {
        backgroundColor: "gray"
      }
    ]
  },
  methods: {
    changeMood() {
      const arr = ["happy", "sad", "normal"];
      // 随机获取一个 类的下标
      const index = Math.floor(Math.random() * 3);
      this.mood = arr[index];
    }
  }
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.11/vue.min.js