[Vue]样式绑定 :class :style

发布时间 2023-10-26 09:40:29作者: 夕苜19
 
      1. class样式
        写法:class="xxx" xxx可以是字符串、对象、数组。
                1) 字符串写法适用于: 类名不确定,要动态获取。
                2) 数组写法适用于: 要绑定多个样式,个数不确定,名字也不确定。
                3) 对象写法适用于: 要绑定多个样式,个数确定,名字也确定,但不确定用不用。
        2. style样式
               1) :style="{ fontSize: xxx }"其中xxx是动态值。(不太常用)
               2) :style="[a,b]"其中a、b是样式对象。(几乎用不到)
 
<body>
    <div id="root">
        <!-- class写法 -->
        <!-- 1. 字符串写法,适用于:样式的类名不确定,要动态指定 -->
        <div class="basic" :class="mode" @click="changeClass">hello</div> <br><br>
        <!-- 2. 数组写法,适用于:样式的数量不确定,类名也不确定 -->
        <div class="basic" :class="mode_arr">hello</div> <br><br>
        <!-- 3. 对象写法,适用于:样式的数量、类名确定,但要动态决定是否使用 -->
        <div class="basic" :class="mode_obj">hello</div> <br><br>

        <!-- style写法 -->
        <!-- 1.对象写法,不常用 -->
        <div class="basic" :style="style_obj1">hello</div> <br><br>
        <!-- 2.数组写法,极其不常用 -->
        <div class="basic" :style="[style_obj1, style_obj2]">hello</div> <br><br>
    </div>
</body>
<script>
    let vm = new Vue({
        el: "#root",
        data: {
            mode: '',
            mode_arr: ['happy', 'normal', 'sad'],
            mode_obj:{
                happy: true,
                normal:true,
                sad: false
            },
            style_obj1:{
                fontSize: '80px',
                color: 'red'
            },
            style_obj2:{
                backgroundColor: 'orange'
            }
        },
        methods: {
            changeClass() {
                var r = Math.floor(Math.random() * 3)
                console.log(r)
                this.mode = this.mode_arr[r]
            }
        },
    })
</script>