关于vue动态绑定class的样例

关于vue动态绑定class的样例

一、基本的绑定样式

1.对象语法

<div :class="{ active: isActive ,'text-danger': hasError }"></div>

2.数组语法

<div v-bind:class="[activeClass, errorClass]"></div>

3.数组语法中加入对象语法

<div v-bind:class="[{ active: isActive }, errorClass]"></div>

这三种是我们常用的动态绑定的方法

现在简单介绍一下这三种的区别

第一种:
<div :class="{ active: isActive ,'text-danger': hasError }"></div>

用大括号来写,就是对 “isActive”,和 “hasError” 去判断他的真假,在之前没有去细看vue.js的官方文档之前以为就是,对大括号里 :后面的数据去判断他的真假,true或者false。

data: {
  isActive: true,  //这种情况就是会渲染上active的样式
  hasError:false,  //这种情况就不会渲染上'text-danger'的样式在div上
}
<style>
    .active{
        background-color : red,
    }
</style>

结果渲染为:

<div class="active"></div>

后面经过实验得到了另一种说法;

data: {
  isActive: "",  //这种情况就是会渲染上active的样式
  hasError:"这是hasError",  //这种情况就不会渲染上'text-danger'的样式在div上
}

在这样的数据下,得到的结果为:

<div class="hasError"></div>

active没有被渲染上去,但是这里的 “isActive” 和 "hasError"并不是我们看到的Boolean值。查阅官方文档得到了以下的结论:

  1. 对于class是否存在取决于数据 “isActive” 和 "hasError"也就是 :后的数据的是否为真值(Truthy),只要是真值,:前面的class样式就会被渲染上去。
  2. 真值和假值,所有一切的值都是真值,除非他们被定义为假值(false、0、-0、0n、""、null、underfined、NaN)。除以上的假值外,其他都是真值。详见<Truthy(真值) - 术语表 | MDN (mozilla.org)>

如果是这样的样式:

<div :class="{active}"></div>

active后面没有他的判断条件的的话,他就会去data中去寻找active的真假

data: {
   active:'isactive'
}
<style>
    .isactive{
        background-color : red,
    }
</style>

这时的active为真值,就会将isactive渲染上去

<div class="isactive"></div>

这样的形式就和第二种:ckass的用法有点类似。

第二种
<div v-bind:class="[activeClass, errorClass]"></div>

用中括号来写,表示一种数组形式,就这时候也是去data去判断这两个是否是真值还是假植。

data: {
  activeClass: 'active',
  errorClass: 'text-danger'
}
<style>
    .active{
        background-color : red,
    }
    .text-danger{
        color:blue,
    }
</style>

这种渲染的效果是:

<div class="active text-danger"></div>

如果这两个都是真值的话,就都会渲染上去。

data: {
  activeClass: 'isactive',
  errorClass: 'text-danger'
}
<style>
    .isactive{
        background-color : red,
    }
    .text-danger{
         background-color : yellow,
    }
</style>

image-20220328211334437

但是如果如果这两个在css种渲染的式样的同一种类型,后面的样式就会将前面的样式掩盖掉,只渲染最后一次的样式。在这里插入图片描述

这时第一次渲染的红色被掩盖了,只留下 'text-danger’的黄色。

第三种
<div :class="[{ active: isActive }, errorClass]"></div>

这种就是结合了前两种的模式,在data中去寻找 “isActive” 和 "errorClass"的真假值,然后去判断是否渲染。

data: {
  isActive: true,
  errorClass: 'text-danger'
}
<style>
    .active{
        background-color : red,
    }
    .text-danger{
        font-size:15px
    }
</style>

这种情况两个就都会渲染出来。

<div class="active text-danger"></div>

还有两种特殊的情况:

<div :class="[active]"></div>
data: {
  active:'1',
}
//这样是无效的
<style>
    .1{
       background-color : red,
    }   
</style>
//这样是有效果的
<style>
    .\31{
       background-color : red,
    }  
</style>

后来经过测试得到,如果我们非得用字符串’ 1 ’ 来写,我们在style中需要写成.\31,这个是ASCII中十六进制代表的字符串 ’ 1 '。但是,如果我们改成其他数字字符,就是在31的基础上往上加,超过9的数字字符串就是将第一个数字进行转义,后面的数字可以直接用数字来写。

data: {
  active:'10',
}
//这样是无效的
<style>
    .\31 0{
       background-color : red,
    }  
</style>

<div  class="static" :class="[active]"></div>
data: {
  active:1, //直接让这个等于一个值,是无法渲染出来的
}
data: {
  active:ture, //这样也是没有效果的
}
<div  class="static"></div>

经过多次的实验得到,这种写法是无法渲染出css的样式的,想让他渲染出来,必须使用字符串 " " 的形式来写,这个问题我也暂时没有找到结果,等以后找到了结果在来补全这一篇。

小结
  1. 关于 :class的用法,{ } 和 [ ]的区别,{ } 一般是去判断在 : 后的值的真假,在css中渲染的时候也是用 : 前的数据去写,而 [ ] 的用法,是在data中去判断他的真假,然后在css的样式的时候,用的是数组的数值在data中等于的某个值去渲染。实例如上代码。
  2. 在进行判断时,需要判断的仅为这个数据是真值还是假值,而不在需要让他成为Boolean值中的true或者false。
  3. 在将data中的数据等于一个数字字符串时,在style中需要转义字符来\让他可以识别这个是数字字符串,而大于9的数字是将第一个数字进行转义,接下来的数字可以直接写出来。
  4. 直接将data中的数据等于一个值,是无法在审查元素中展示出来的,这时候的class为他之前的样式。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中,动态绑定class有多种方法。第一种方法是使用对象语法,可以根据条件来动态地添加或删除class。例如,可以使用`v-bind:class`指令在`<div>`元素上绑定一个对象,对象中的属性名对应要绑定的class名,属性值为条件。当属性值为真时,对应的class会被添加到元素上。例如,可以使用以下代码来动态绑定class: ```html <div :class="{'active': isActive}">文字</div> ``` 其中,`isActive`是一个布尔值,如果`isActive`为真,则`active`类会被添加到`<div>`元素上。 第二种方法是使用数组语法,可以根据多个条件来动态地添加或删除class。可以使用`v-bind:class`指令在`<div>`元素上绑定一个数组,数组中的每个元素都是一个条件表达式或者是一个class名。如果条件表达式为真,则对应的class会被添加到元素上。例如: ```html <div :class="[activeClass, errorClass">文字</div> ``` 其中,`activeClass`和`errorClass`都是字符串类型的class名,如果它们对应的条件为真,则对应的class会被添加到`<div>`元素上。 第三种方法是使用对象语法的缩写形式,可以更简洁地绑定class。可以使用`v-bind:class`指令在`<div>`元素上绑定一个对象,对象中的属性名对应要绑定的class名,属性值为布尔值。如果属性值为真,则对应的class会被添加到元素上。例如: ```html <div :class="{activeTwo: isActive, 'activeThree': hasError}">文字</div> ``` 其中,`isActive`和`hasError`都是布尔值,如果它们为真,则`activeTwo`和`activeThree`类会被添加到`<div>`元素上。 这些方法都可以实现动态绑定class,并根据条件来添加或删除class,以实现样式的动态改变。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值