vue之 style和class的动态绑定

举报
林太白 发表于 2025/12/26 17:09:55 2025/12/26
【摘要】 vue之 style和class的动态绑定

vue之 style和class的动态绑定

1、绑定Class

需要记住的是:在Vue2中,:class绑定数组的语法应该是每个元素都是字符串或对象,而不是像你这样直接写条件表达式。

正确演示和错误演示

//错误
:class="[
'flexzi flex-text-center',
'flexzi flex-text-center',
'borderb':indexb<(vala.performance.length-1),
'backdeep': indexb % 2 != 0,
]">

//正确
:class="[
  'flexzi flex-text-center',
  { 'borderb': indexb < (vala.performance.length - 1) },
  { 'backdeep': indexb % 2 != 0 }
 ]">

2、Style绑定

👉 字符串形式

🍎普通的类名绑定+函数过滤

// vue2示例
:class="`imgrotate${getFilteredIndexes(rppgdata.syndromeList)}`"

👉对象方法绑定

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

= >  省略以后写成

<div :class="{ active: isActive, 'noactive': hasError }"></div> 
  
data: {  
    isActive: true,  
    hasError: false  
}

👉数组方法绑定

需要注意的是:

<font style="color:rgb(255, 80, 44);background-color:rgb(255, 245, 245);">数组形式(类名必须用''包起来):

<div v-bind:class="[isActive ? activeClass : '', errorClass]"></div> 
  
data: {  
    activeClass: 'active',  
    errorClass: 'text-danger'  
}

进一步:在数组中使用三元表达式:

<div :class="['red', 'thin', isactive?'red':'yellow']">内容</div>

实际之中结合下标进行使用

<div 
:class="[`medtypecontli medtypecontli${index+1}`,item.isMark==0?'':`medtypecontliact`]"
v-for="(item,index) in rppgdata.syndromeList">
  
</div>

👉数组中嵌套对象

需要记住的是:在Vue2中,:class绑定数组的语法应该是每个元素都是字符串或对象,而不是像你这样直接写条件表达式。

通过数组,对象相互配合的方式实现更多的可能

<div :class="['red', 'thin', {'active': isactive}]">内容</div>
data:{isactive:true,}

isactive值的说明:"{‘active’: isactive}"中的“isactive”的值为true时,那么使用该类。为false就不使用该类。

👉直接使用对象:

<div :class="{red:true, italic:true, active:true, thin:true}">内容</div>

说明:此对象中,键与值一一对应,当前值为true的时候,当前对应的键(也就是类名)就使用,为false就不应用。

遇到一些不需要我们进行选择,不需要做出动态时候的类,可以使用以下方法:不需要动态绑定的类

<div class="static" :class="{'active':isActive,'error':isError}"></div>

🍓 应用

功能需求1:多个静态动态类型拼接

🌟 面对两个类名并且其中一个静态,一个动态时,绑定的方式为:

<div v-for="val in itemvalue">
    <i :class="`iconfont`+val.name"></i>
</div>

数据格式

itemvalue:[{value:'12',name:'search'},{value:'16',name:'add'}],
  • 对象语法
  • 数组语法

👉对象语法:

🍎动态style之后直接放一个对象

<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>  
  
data: {  
    activeColor: 'red',  
    fontSize: 30  
}

如果对象的键有特殊符号“-”等等,那么要用引号括起来。

<div :style="{color: 'red', 'font-size': '40px'}">这是一个文本</div>

🍎将样式对象,定义到 data 中,并直接引用到 :style 中

data: {
      styleObj: { color: 'red', 'font-size': '40px', 'font-weight': '200' }
  }

🍎数组语法

<div v-bind:style="[styleColor, styleSize]"></div>  

data: {  
    styleColor: {  
    color: 'red'  
},  
styleSize:{  
    fontSize:'23px'  
   }  
}

简写方式为:

<font style="color:rgb(255, 80, 44);background-color:rgb(255, 245, 245);"><div :style="[styleColor, styleSize]"></div>

🍓需要格外注意的点

绑定样式名时,如果写成驼峰命名,则不需要引号,如果是复杂命令,则需要加引号




【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。