问题描述:
遇到一个问题,就是 一个元素要动态绑定
两个或多个类名。
固定绑定多个类名方法:
绑定多个写死的类名很简单方法有如下几种:
方式一:
class 中间有空格
<div class="active vv">5555555</div>
方式二:
数组形式 使用 :class 当然 直接在data里声明一个 变量也可以。
<div :class="['active','vv']">5555555</div>
方式三:
借用一个方法处理
<div :class="classS()">5555555</div>
methods里定义一个方法 返回 字符串 和数组都行
methods:{
classS(){
return ['vv','active'];
// return "vv active";
}
}
动态绑定多个类名方法:
其实动态绑定 和固定 差不多,方式是一样的,无非就是需要根据变量来判断。
以下方式 data 和 样式代码如下
data() {
return {
bb:1,
index:1,
cc:1
}
},
.active{
color:red;
}
.vv{
font-size:30px;
}
方式一:
三目运算符,且以数组形式 。不推荐使用这种方法,如果只有两个类名可以使用,多了的话就不好写 三目运算符了。
<div :class="bb==index&&cc==index?['active','vv']:bb==index?'active':cc==index?'vv':''">55555555555</div>
方式二:
以大括号 形式
<div :class="{active:bb==index,vv:cc==index}">55555555555</div>
方式三:
数组形式,每个数组项里使用 判断
<div
:class="[{active:bb==index},{vv:cc==index}]">55555555555</div>
直接三目也可以
<div :class="[bb==index?'active':'',cc==index?'vv':'']">55555555555</div>
方式四:
用一个方法搞定
<div
:class="classS1()">55555555555</div>
classS1(){
let v = [];
if (this.index == this.bb) {
v.push("active");
}
if (this.index == this.cc) {
v.push("vv")
}
return v;
}
项目中用到了方法四
eg:需要实现图中效果
<div class="feed-content feedWidth">
<div
class="feed"
:class="classS1(item)"
v-for="(item, index) in feedList"
:key="index"
>
{{ item }}
</div>
</div>
data中定义
data() {
return {
feedList: [ "1", "2", "3","1","2", "3", "1","2", "3", "1", "2","3","1","2", "3",
"1","2","3",],
};
},
methods 方法
methods: {
classS1(val) {
let v = [];
if (val == 1) {
v.push("feedGreen");
} else if (val == 2) {
v.push("feedYellow");
} else {
v.push("feedGray");
}
return v;
},
},
style样式
.feed-content {
display: flex;
flex-wrap: wrap;
margin: 0 auto;
}
.feedWidth {
width: 50%;
}
.feed {
width: 30px;
height: 27px;
line-height: 27px;
text-align: center;
margin: 2px;
}
.feedGreen {
background: #409e2a;
}
.feedYellow {
background: #fde704;
}
.feedGray {
background: #747474;
}
总结:
方式一:
优点: 写法简单
缺点:写两个 以上类名时 无法写 且不利于阅读
方式二:
优点: 写法简单
缺点:当多个时 也不利于阅读
方式三:
优点: 写法简单
缺点:当多个时 也不利于阅读
方式四:
优点: 写法简单 ,利于阅读 ,而且可以添加 很多 判断
缺点:无
如果是 两个及两个以下 方式一、方式二、方式三、方式四都可以 。
如果是 两个以上 方式二、方式三、方式四 这个 我建议还是 用方式四 看起来很清爽。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/79172.html