欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > vue中:class语法的{}[]两种用法及其使用场景例子

vue中:class语法的{}[]两种用法及其使用场景例子

2025/5/9 16:21:55 来源:https://blog.csdn.net/SSHLY3/article/details/143650567  浏览:    关键词:vue中:class语法的{}[]两种用法及其使用场景例子

语法       :class="对象/数组"


① 传对象 →键就是类名,值是布尔值。如果值为 true,则当前元素含有这个类实现这个类的样式,否则没有这个类,不去实现

<div class="box":class="{ 类名1:布尔值,类名2:布尔值}"></div>

适用场景:某一个或多个类名,来回切换,从而灵活的实现元素样式切换
东东秒杀       每日特价       品类秒杀     

 
② 传数组 →数组中所有的类,都会添加到盒子上,这样这些类所设置的样式就会被渲染出来,本质就是一个 class 列表

 <div class="box" :class="[ 类名1,类名2,类名3]"></div>

下面是东东秒杀的案例:

 这是data数据:

 data: {list: [{ id: 1, name: '京东秒杀' },{ id: 2, name: '每日特价' },{ id: 3, name: '品类秒杀' }]}

这里有三个tab,给第一个tab设置class为“active ” ,并在上面的<style>标签里面给class为“active ”的类设置了红底白字的样式属性进行渲染 

li a.active {background-color: #e01222;color: #fff;}</style>
</head>
<body><div id="app"><ul><li><a class="active" href="#">东东秒杀</a></li><li><a href="#">每日特价</a></li><li><a href="#">品类秒杀</a></li></ul></div>

需求效果是点击哪个tab就高亮哪个tab,从而实现整个active 类名,来回切换渲染,从而灵活的实现元素样式切换

首先从data获取列表使用v-for渲染,a标签里面的值用{{}}展示为list的每一个name,并加上class属性为active :

  <li  v-for="(item,undex) in list" :key="item.id"><a  class="active" href="#">{{item.name}}</a></li>

 效果是文字和效果展示如下:

现在需要点击哪个<li>标签就高亮渲染哪个

所以使用:class="对象/数组"里面的对象语法:

  <li  v-for="(item,undex) in list" :key="item.id"><a  :class="{active :true}" href="#">{{item.name}}</a></li>

首先这里 :class="{active :true}"表示所有tab全部带这个class标签:true

而需求是点哪个就高亮哪个,所以可以用一个值来记住点的是哪个,这里其实记item.id可以,下标index也是可以的,这里就用下标展示吧。先去data里面声明一个rememberIndex并设置默认值为下标0

data: {rememberIndex:0,list: [{ id: 1, name: '京东秒杀' },{ id: 2, name: '每日特价' },{ id: 3, name: '品类秒杀' }]}

去a标签里面的:class里面把判断条件写完整,即点击的下标是不是记录的这个

<a :class="{active:index===rememberIndex}">{{item.name}}</a>

效果出来了

并且把下标默认值给为1和2时也能同样生效:

再想想怎么把点击哪个tab时把下标传过去让rememberIndex知道,直接给每个<li>标签注册点击事件把rememberIndex的值赋值为当前<li>的下标即可

<li v-for="(item,index) in list" :key=item.id @click=""rememberIndex>

 至此大功告成,效果是点击哪个tab就高亮渲染哪个

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词