VUE中style和class数据绑定

阅读官方文档,试着敲了下代码,我在思考如何把这学到的知识融会贯通的运用,只有多加练习。从这些练习中不仅学习到了数据绑定的知识还学习到了、取反、三元表达式的使用。

实现了一个点击它它就变个样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="vue.js"></script> 
    <style>
        .activated{
            color:blueviolet;
            font-size:30px;
            background: brown;

        }
    </style>

</head>
<body>
    <div id="hello" @click="change"
    :class="{activated:isActivated}"
    >大帅哥
    </div>

    <script>
    
        var vm =new Vue({
            el:"#hello",
            data:{
                isActivated:false//是否绑定跟这个true和false的值有很大的关系
            },
            methods:{
                change:function(){
                    this.isActivated=true
                }
            }
    
            
        })
    </script>
</body>
</html>

那么再次点击它,让它再变回原来的样式呢
这里可把function函数那里弄成取反的操作

   <script>
    
        var vm =new Vue({
            el:"#hello",
            data:{
                isActivated:false//是否绑定跟这个true和false的值有很大的关系
            },
            methods:{
                change:function(){
                    this.isActivated=!this.isActivated;//取反,它就会一直不停的变
                }
            }
    
            
        })
    </script>

如果使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="vue.js"></script> 
    <style>
        .activated{
            color:blueviolet;
            font-size:30px;
            background: brown;
        }
    </style>

</head>
<body>
    <div id="hello" @click="change"
    :class="[activated]"
    >大帅哥
    </div>
    <script>
        var vm =new Vue({
            el:"#hello",
            data:{
                activated:""
            },
            methods:{
                change:function(){
                    this.activated="activated";
                }
            }
    
            
        })
    </script>
</body>
</html>

如果class和数组绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="vue.js"></script> 
    <style>
        .activated{
            color:blueviolet;
            font-size:30px;
            background: brown;
        }
    </style>

</head>
<body>
    <div id="hello" @click="change"
    :class="[activated]"
    >大帅哥
    </div>
    <script>
        var vm =new Vue({
            el:"#hello",
            data:{
                activated:""
            },
            methods:{
                change:function(){
                    if(this.activated==="activated"){
                        this.activated="";
                    }else{
                        this.activated="activated";
                    }
                   
                }
            }
    
            
        })
    </script>
</body>
</html>

使用三元表达式替换那段庸余的if,else

  this.activated = this.activated === "activated"? "": "activated";

好了上面是用class,下面用style

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="vue.js"></script> 
    <style>
        .styleObj{
            color:blueviolet;
            font-size:30px;
            background: brown;
        }
    </style>

</head>
<body>
    <div id="hello" @click="change"
    :style="styleObj"
    >大帅哥
    </div>
    <script>
        var vm =new Vue({
            el:"#hello",
            data:{
                style:{
                    color:"black"
                }
            },
            methods:{
                change:function(){
                   this.styleObj.color = this.styleObj.color === "black"? "red" : "black";
                    
                }
            }
    
            
        })
    </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值