05vue学习——对class属性利用v-bind进行属性绑定

本文介绍了在Vue中如何使用v-bind指令来绑定class属性,包括直接传递数组、使用三元表达式及对象等方法,并展示了不同方式的代码实例。

05vue学习——对class属性利用v-bind进行属性绑定

前言

前面我们提到可以使用 v-bind 对元素的属性进行绑定,class 属性也不例外,接下来让我们来学习如何对元素的class 属性通过v-bind 来进行绑定。

0.直接使用普通的方法,即没有使用v-bind来绑定class属性

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用普通的方法设置class属性</title>
    <script src="lib/vue-2.4.0.js"></script>
    <style>
        .red{
            color: #f00;
        }
        .thin{
            font-weight: 200;
        }
        .italic{
            font-style: italic;
        }
        .active{
            letter-spacing: 10px;
        }
    </style>
</head>
<body>
    <div class="body">
        <h1 class="red thin">{{msg}}</h1>
    </div>
    <script>
    let vm = new Vue({
    el:".body",
    data:{
        msg:"我是用于测试‘对class属性利用v-bind进行属性绑定’的文字",
        flag:true,
        classSet:{
            italic:true, 
            active:false, 
            red:true}
    },
})
    </script>
</body>
</html>

该设置在浏览器显示的效果如下图:
在这里插入图片描述

由上图可得这样直接将类名赋值给class属性也可以达到我们预期的效果,为什么还要大费周章的给 class 属性设置 v-bind 指令呢? 下面让我们来介绍利用 v-bind 对属性进行设置给我们带来了什么便利吧!

注意:在使用v-bind时,v-bind的值如果没有用引号包裹起来,则到 vm 中的 data 中去寻找,如果有用引号包裹起来,则是该值

1.使用v-bind来绑定class属性——直接传递一个数组

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>07——对class属性利用v-bind进行属性绑定</title>
    <script src="lib/vue-2.4.0.js"></script>
    <style>
        .red{
            color: #f00;
        }
        .thin{
            font-weight: 200;
        }
        .italic{
            font-style: italic;
        }
        .active{
            letter-spacing: 10px;
        }
    </style>
</head>
<body>
    <div class="body">
        <!-- 使用v-bind来绑定class属性——直接传递一个数组(需要用引号包裹起来) -->
        <h1 :class="['italic','active']">{{msg}}</h1>
    </div>
    <script>
    let vm = new Vue({
    el:".body",
    data:{
        msg:"我是用于测试‘对class属性利用v-bind进行属性绑定’的文字",
        flag:true,
        classSet:{
            italic:true, 
            active:false, 
            red:true}
    },
})
    </script>
</body>
</html>

该设置在浏览器显示的效果如下图:
在这里插入图片描述

由上图可得这样利用 v-bind 传递一个数组来绑定 class 属性,相比较直接传递类名的方式更加复杂,也没有什么多余的功能,为什么还要使用这个呢?接下来让我们来正真见识 v-bind 来绑定 class 属性的强大之处。
2.使用v-bind来绑定class属性——在传递的数组中使用三元表达式

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>07——对class属性利用v-bind进行属性绑定</title>
    <script src="lib/vue-2.4.0.js"></script>
    <style>
        .red{
            color: #f00;
        }
        .thin{
            font-weight: 200;
        }
        .italic{
            font-style: italic;
        }
        .active{
            letter-spacing: 10px;
        }
    </style>
</head>
<body>
    <div class="body">
        <!-- 用v-bind来绑定class属性——在传递的数组中使用三元表达式(需要用引号包裹起来) -->
        <h1 :class="['italic','active',flag?'thin':'']">{{msg}}</h1>
    </div>
    <script>
    let vm = new Vue({
    el:".body",
    data:{
        msg:"我是用于测试‘对class属性利用v-bind进行属性绑定’的文字",
        flag:true,
        classSet:{
            italic:true, 
            active:false, 
            red:true}
    },
})
    </script>
</body>
</html>

该设置在浏览器显示的效果如下图:
在这里插入图片描述

由上图可得这样利用 v-bind 传递一个数组来绑定 class 属性,可以在这个数组里面使用三元表达式,可以通过 js 中的数据来控制该样式是否生效,是不是逐渐感受到了利用 v-bind 来绑定class 属性的强大之处呢?别急,接下来还有更好的!
3.使用v-bind来绑定class属性——在传递的数组中使用对象

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>07——对class属性利用v-bind进行属性绑定</title>
    <script src="lib/vue-2.4.0.js"></script>
    <style>
        .red{
            color: #f00;
        }
        .thin{
            font-weight: 200;
        }
        .italic{
            font-style: italic;
        }
        .active{
            letter-spacing: 10px;
        }
    </style>
</head>
<body>
    <div class="body">
        <!-- 注意:在使用v-bind时,v-bind的值如果没有用引号包裹起来,则到 vm 中的 data中去寻找,如果 有用引号包裹起来,则是该值 -->
        <!-- 使用v-bind来绑定class属性——在传递的数组中使用对象(需要用引号包裹起来) -->
        <h1 :class="['italic','active',{red:flag}]">{{msg}}</h1>
    </div>
    <script>
    let vm = new Vue({
    el:".body",
    data:{
        msg:"我是用于测试‘对class属性利用v-bind进行属性绑定’的文字",
        flag:true,
        classSet:{
            italic:true, 
            active:false, 
            red:true}
    },
})
    </script>
</body>
</html>

该设置在浏览器显示的效果如下图:
在这里插入图片描述

由上图可得这样利用 v-bind 传递一个数组来绑定 class 属性,可以在这个数组里面使用对象,相比较于使用三元表达式,使用对象更加符合我们的常规思维,看起来也更加简洁易懂!
4.使用v-bind来绑定class属性——直接传递一个对象

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>07——对class属性利用v-bind进行属性绑定</title>
    <script src="lib/vue-2.4.0.js"></script>
    <style>
        .red{
            color: #f00;
        }
        .thin{
            font-weight: 200;
        }
        .italic{
            font-style: italic;
        }
        .active{
            letter-spacing: 10px;
        }
    </style>
</head>
<body>
    <div class="body">
        <!-- 直接传递一个对象(对象的属性名可带引号也可不带引号,所以这里没有使用) -->
        <h1 :class="classSet">{{msg}}</h1>
    </div>
    <script>
    let vm = new Vue({
    el:".body",
    data:{
        msg:"我是用于测试‘对class属性利用v-bind进行属性绑定’的文字",
        flag:true,
        classSet:{
            italic:true, 
            active:false, 
            red:true}
    },
})
    </script>
</body>
</html>

该设置在浏览器显示的效果如下图:
在这里插入图片描述

由上图可得这样利用 v-bind 传递一个对象来绑定 class 属性,这个对象直接在 js 代码中的 data 对象中定义好,直接使用对象名就可以获取该样式对象中已经控制是否生效的样式了,是不是很方便啊!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值