zoukankan      html  css  js  c++  java
  • 7. v-bind 绑定Class操作 【对象语法】

    因为v-bind可以直接实现 标签属性的值动态化,那么Class作为一个属性,那么:

    
    
     <style>
            .active{
                color:red;
            }
        </style>

    <
    script src="js/vue.js"></script> <div id="app"> <h2 :class="active">不忘初心 , 方得始终 。</h2> </div> <script > const app = new Vue({ el:"#app", data:{ active:"active" } }) </script>

    如果我这样写的话 你可能会骂我 画蛇添足 多此一举 *****  s*****b*****当然 这是对的,但是他有一种另外形式来展现:

    就是 Class属性  + v-bind 可以用 对象语法来写,对象语法 当然是一个{} ,里面是 键 - 值 ,值是boolean型的  如果是 true 的才会把值添加进去

    例:

        <style>
            .red{
                color:red;
            }
            .blue{
                color: blue;
            }
        </style>
    
    </head>
    <body>
    <script src="js/vue.js"></script>
        <div id="app">
            <!-- <h2 class="blue">不忘初心 , 方得始终 。</h2> -->
            <h2 :class="{red:false,blue:true}">不忘初心 , 方得始终 。</h2>
        </div>
    
    <script >
        const app = new Vue({
            el:"#app",
            data:{
                red:"red",
                blue:"blue",
            }
        })
    </script>

    上面的true 和 false 完全可以用变量代替 ,那么进阶的写法就应该这样写 【我们配个方法 然后实现 点击按钮变红色 再次点击变蓝色】:

    
    
        <style>
            .red{
                color:red;
            }
            .blue{
                color: blue;
            }
        </style>

    <
    script src="js/vue.js"></script> <div id="app"> <!-- <h2 class="blue">不忘初心 , 方得始终 。</h2> --> <h2 :class="{red:boolean,blue:!boolean}">不忘初心 , 方得始终 。</h2> <button @click="not">切换颜色</button> </div> <script > const app = new Vue({ el:"#app", data:{ red:"red", blue:"blue", boolean:true }, methods:{ not:function (){ this.boolean = !this.boolean; } } }) </script>

    所以 非常的方便啊,

    还有一个特点:

    如果你有多个Class 其中有一个是v-bind绑定的 那么它们两个Class会合并起来 并不会吧 v-bind绑定的class 覆盖掉,例如:

    <script src="js/vue.js"></script>
        <div id="app">
    <!--        <h2 class="h2 red">不忘初心 , 方得始终 。</h2>-->
            <h2 class="h2" :class="red">不忘初心 , 方得始终 。</h2>
        </div>
    
    <script >
        const app = new Vue({
            el:"#app",
            data:{
                red:"red"
            }
        })
    </script>

    还有就是 如果你觉得 直接写对象语法太长的话  你就直接定义一个方法,然后写进去即可,v-bind也会自动解析这个函数的  ,函数中直接写 return {xxxx:teue,xxxx:false} 即可  

    例:

        <style>
            .red{
                color:red;
            }
            .blue{
                color: blue;
            }
        </style>
    
    </head>
    <body>
    <script src="js/vue.js"></script>
        <div id="app">
    <!--   记得加括号 因为这是调用函数 不是事件调用的.     -->
            <h2 :class="classs()">不忘初心 , 方得始终 。</h2>
        </div>
    
    <script >
        const app = new Vue({
            el:"#app",
            data:{
                red:"red"
            },
            methods:{
                classs:function (){
                    return {red:true,blue:false};
                }
            }
        })
    </script>

    ,还有个数组语法 下一篇写

    本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/14931888.html

  • 相关阅读:
    尝试Spring Data Jpa--告别CRUD
    SSM框架开发web项目系列(七) SpringMVC请求接收
    SSM框架开发web项目系列(六) SpringMVC入门
    SSM框架开发web项目系列(五) Spring集成MyBatis
    SSM框架开发web项目系列(四) MyBatis之快速掌握动态SQL
    SSM框架开发web项目系列(三) MyBatis之resultMap及关联映射
    SSM框架开发web项目系列(二) MyBatis真正的力量
    从MVC到Ajax再到前后端分离的思考
    SSM框架开发web项目系列(一) 环境搭建篇
    antd4.0 定制主题
  • 原文地址:https://www.cnblogs.com/bi-hu/p/14931888.html
Copyright © 2011-2022 走看看