详解v-bind怎么动态绑定class属性

v-bind怎么动态绑定class属性?本篇文章带大家详细了解一下v-bind指令动态绑定class属性的多种语法,希望对大家有所帮助!

详解v-bind怎么动态绑定class属性

v-bind可以动态设置class属性,用以实现动态样式。写法:

登录后复制

一、v-bind动态绑定class属性(对象语法)

动态绑定class属性之后,class的值是一个变量,可以将它放到data中动态绑定样式,以动态地切换 class。(学习视频分享:vue视频教程)

1、直接通过{}绑定一个或多个类

v-blid:class的属性中可以传入一个对象,对象中包括一组组键值对

  1. :class= "{key1:value1,key2:value2...}"

登录后复制

类名就是对应的样式,也就是键(key);value就是对应着增加和移除该类,取值是true和false

若value值为true,则该key样式起作用

若value值为false,则该key样式不起作用

  1. .color {color: red;}.background {background-color: pink;}

登录后复制登录后复制

  1.   

    {{message}}

          

    {{message}}

            

    {{message}}

          
    const app = new Vue({ el:"#app", data:{ message:"你好啊", color:"color", isColor:false, isBackground:true } })

登录后复制

详解v-bind怎么动态绑定class属性

v-bind:class 指令也可以与普通的 class 属性共存。

登录后复制

  1. data: {  isActive: true,  hasError: true}

登录后复制

详解v-bind怎么动态绑定class属性

当 isActive 或者 hasError 变化时,class 列表将相应地更新。例如,如果 hasError 的值为 false,class 列表将变为 “static active”。

  1. data: {  isActive: true,  hasError: false}

登录后复制

详解v-bind怎么动态绑定class属性

2、绑定的数据对象不必内联定义在模板里,可绑定到一个类对象classObject

  1. .color {color: red;}.background {background-color: pink;}

登录后复制登录后复制

  1.   

    {{message}}

          
    const app = new Vue({ el:"#app", data:{message:"你好啊",classObject: {color: true,background: false} } })

登录后复制

详解v-bind怎么动态绑定class属性

3、也可以绑定一个返回对象的计算属性

  1.   

    {{message}}

          
    const app = new Vue({ el:"#app", data:{message:"你好啊",isColor: true,isBackground: true},computed: { classObject: function () {return { color: this.isColor, background: this.isBackground} }} })

登录后复制

详解v-bind怎么动态绑定class属性

4、class中的对象比较复杂,则直接放在一个methods中,然后调用这个函数,实现动态切换

  1. nbsp;html>.active{background-color: pink;}.line{color: red;}

    方法methods:{{message}}

    计算属性computed:{{message}}

    const app = new Vue({el: '#app',data: {message: '你好啊',active:'active',isAcitve:true,isLine:true},methods:{btnClick: function () {this.isAcitve = !this.isAcitve},getClasses:function () {return {active:this.isAcitve,line:this.isLine}}},computed: {classes: function () {return {active:this.isAcitve,line:this.isLine}}}})

登录后复制

详解v-bind怎么动态绑定class属性

二、v-bind动态绑定class属性(数组语法)

我们可以把一个数组传给 :class,以应用一个 class 列表;

数组语法格式为:

  1. :class="[base1,base2]"

登录后复制

v-bind 动态绑定class 数组语法,就是直接给其传入一个数组,但是数组里面都是类名,数组中的类名,在页面中都会被加入到该标签上。通过数组内元素的增加或减少来实现,样式的改变。

注意:这里面的类名都需要用 ‘ ‘ 包裹起来,如果没有包裹起来,Vue会将其当成data里面的某个属性,而去data里面寻找,显然data里面是没有该属性的,那么报错也就来了。这一点在Vue中都是通用的,没加引号当成data里面的属性来处理

注:和对象语法一样,可以和普通的类同时存在,并不冲突

  1. {{message}}

登录后复制

详解v-bind怎么动态绑定class属性

示例:

  1. nbsp;html>        .active{color: red;}            

    {{message}}

            

    {{message}}

            

    {{message}}

            

    方法methods:{{message}}

            

    计算属性computed:{{message}}

                 const app = new Vue({ el: '#app', data: { message: '你好啊', active:'active', line:'bbbbbbbbbb' }, methods:{ getClasses: function () { return [this.active,this.line] } }, computed: { classes: function () { return [this.active,this.line] } } })

登录后复制

详解v-bind怎么动态绑定class属性

如果你也想根据条件切换列表中的 class,可以用三元表达式:

登录后复制登录后复制

这样写将始终添加 errorClass,但是只有在 isActive 是 true 时才添加 activeClass。

不过,当有多个条件 class 时这样写有些繁琐。所以在数组语法中也可以使用对象语法:

登录后复制登录后复制

示例:

  1. nbsp;html>.aaa{padding: 10px;}.active{background-color: pink;}.line{color: red;}
    {{message}}
        
    {{message}}
        
    {{message}}
    const app = new Vue({el: '#app',data() {return { message: "Hello World", nba: 'line', isActive: false} }})

登录后复制

详解v-bind怎么动态绑定class属性

(学习视频分享:vue视频教程、vue视频教程)

以上就是详解v-bind怎么动态绑定class属性的详细内容,更多请关注【创想鸟】其它相关文章!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

点点赞赏,手留余香

给TA打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    编程技术

    Vue中父组件向子组件传递数据的方法

    2025-4-1 16:59:37

    编程技术

    实例解决vue中使用lang=“scss“出现的报错

    2025-4-1 16:59:51

    0 条回复 A文章作者 M管理员
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    私信列表
    搜索