vue动态样式绑定(v-bind,缩写:)

在Vue项目中,当需要根据条件为大量查询数据设置不同样式时,可以避免重复的v-if/v-show。一种方法是通过`:style`动态绑定样式,在methods中定义方法判断并返回样式对象。另一种方式是使用`:class`动态绑定类,结合三元运算符实现条件样式。此外,还介绍了一个验证字符串长度的方法,特别考虑了汉字和英文字符的长度差异。
摘要由CSDN通过智能技术生成

        在vue项目中对于大量查询出来的数据有时候会要求根据条件进行不同样式的展示(一般也就是大屏展示的时候),不可能将相同的代码进行多次样式的绑定,利用v-if或者v-show的形式一次展示,这样一来会显得代码非常臃肿,哈哈哈哈,当然看起来也不是很高级,也就是很容易将自己的水平暴露给别人哈,那么如何解决呢?如下:

1.直接进行style绑定

在标签上进行样式绑定

<li  :style="getStyle(item)" v-for="(item,index) in data" :key="index"></li> 

然后在methods中去实现它就好了

methods:{

   getStyle(item){

       if(item.active){          //active是用来说明是否是当前元素,当前元素给true

           return {'border':'2px solid #ddb48a',"border-radius": "6px"}

       }

       return {}

   }

}

2.动态绑定:class

动态绑定肯定是有条件哒,自然就会想到三元运算法(条件?条件成立时:条件不成立时),它也是一个比较方便而且使用也很频繁的表达式,那么就用它啦。

:class="this.validateTextLength(name) > 6 ? 'class1': 'class2'"

顺便安利一个判断字符串长度的方法(注意:汉语与英语是不一样的),不过这个是我翻译别人的,链接找不到了,如有不妥敬请见谅。

methods:{

    validateTextLength (value) {

        let cnReg = /([\u4e00-\u9fa5]|[\u3000-\u303F]|[\uFF00-\uFF60])/g

        let mat = value.match(cnReg)

        let length

        if (mat) {

          length = (mat.length + (value.length - mat.length) * 0.5)

          return length

        } else {

          return value.length * 0.5

        }

    }

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甜甜凉白开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值