23 Class与Style动态绑定

划重点
  • v-bind 绑定机制的使用
  • 在computed 中动态操作绑定的样式Class
  • computed中的方法有返回值
  • 对于class可以定义一个默认的样式;同时也可以定义一个需要动态变化的对应的样式名称
土豆肉片

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>class 通过方法绑定返回需要显示的对应绑定的 class 样式</title>
    <script src="./lib/vue-2.6.10.js"></script>

    <style>
        /*  背景样式1  */
        .classType1 {
            background-color: rgb(48, 79, 163);


        }

        /* 背景样式2 */
        .classTypeError {
            background-color: brown;

        }

        /*  文本样式1 */
        .classText1 {
            font-size: 1rem;
        }

        /* 文本样式2 */
        .classTextError {
            font-size: 2rem
        }

        .text-danger {
            font-style: italic
        }
    </style>
</head>

<body>
    <div id="app">
        <!-- v-bind缩写是( :-->
        <div class="text-danger" :class="checkClassChange" @click="ChangeType" style="width:50%;margin: auto">{{ msg }}</div>

    </div>
    <script>

// 说明:这里用的几个知识点;
//1:对上面?div中的class: text-danger 是默认的不会变化的样式:倾斜字体设置 ;;;
//  v-bind:class是绑定的样式:通过computed动态监听改变的方法:checkClassChange 获取返回的样式;
//checkClassChange :返回一个或者多个 样式都是可以的;;;这里我返回了两个样式:通过数组的形式返回?

//下面?   定义的属性 dataMsg可以直接用在Vue--> data{...} 中; 并且 如果是在Vue中;那么对data中的值重新赋值的话:可以使用 vm 也可以使用:this
//但是如果在Vue外部使用 data中的参数的话;那么需要使用 使用 vm 表示其环境 :如 new Vue(...)逻辑外面下面?的 vm.error = 1 ; 等价:dataMsg.error = 1 ;并且不管什么方式改变error的值那么vm和dataMsg都是同时对应改变的



        var dataMsg = {
            type1: true,
            error: null,
            msg: '通过v-bind 绑定class 动态改变文字的大小和背景颜色(一个常用且强大的功能)'
        }
        // dataMsg.error =1 ;
        var vm = new Vue({
            el: '#app',
            data: dataMsg,
            methods: {
                ChangeType: function () {
                    // 这里使用 vm 和 this 都是对应的 Vue的环境 ;; 但是如果在 Vue外面重新定义data中的值则需要使用:
                    vm.type1 = !vm.type1;
                    this.error = '1';
                }
            },
            computed: {//方法有返回值:return  ; 可以监听动态改变 和watch 功能一样
                checkClassChange: function () {
                    return [
                        this.type1 ? 'classType1' : 'classTypeError',
                        this.error ? 'classText1' : 'classTextError'
                    ]
                    //    [
                    //         active:this.isActive && !this.error,
                    //             'text-danger':this.error && this.error.type === 'fatal'
                    //         // this.type1 ? 'classType1' : 'classTypeError'+this.error ? 'classText1' : 'classTextError';
                    //         ]
                }


            }
        })


        // vm.error = 1 ;//
    </script>

</body>

</html>
看图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值