有三种方式:
1、字符串写法(freeA)
 适用于:样式的类名不确定,需要动态指定
 2、数组写法(freeB)
 适用于:要绑定的样式个数不确定,名字也不确定
 3、对象写法(freeC)
 适用于:要绑定的样式个数确定,名字确定,但是要动态决定是否
 对象写法简写
<button style="width: 5rem;height: 3rem;"  :class="{样式名:true|false}}" @click="test"></button>
如
<button style="width: 5rem;height: 3rem;"  :class="{greeC:freeCC}" @click="test"></button>
demo如下
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<style>.redC{background-color: red;}.greeC{background-color: gray;}.pinC{background-color: pink;}</style><div id="app">{{ message }}
<button style="width: 5rem;height: 3rem;"  :class="freeA" @click="test"></button>
<button style="width: 5rem;height: 3rem;"  :class="freeB" @click="test"></button>
<button style="width: 5rem;height: 3rem;"  :class="freeC" @click="test"></button>
</div>
<script>
//  vue2
let vm=new Vue({el: '#app',data: {message:'阿萨德',x:'',y:'',z:{za:1},freeB:['redC','greeC'],freeA:'redC',freeC:{pinC:true}},methods:{},})</script>