Vue给标签动态绑定样式class或者style

我的项目中实际使用的是vue+element ui

:class

:class等同于 v-bind:class
借用Vue官网的解释:

<div v-bind:class="[active: isActive ]"></div>

Vue官网使用时{}并不是[]但是在使用的时候发油编译器报错
本人刚接触前端,有不对的希望各位指正
上面的语法表示 active 这个 class 存在与否将取决于数据 property isActive 的 真值
你可以在对象中传入更多字段来动态切换多个 class。此外,v-bind:class 指令也可以与普通的 class attribute 共存。当有如下模板:

<div
  class="static"
  v-bind:class="[ active: isActive, 'text-danger': hasError ]"
></div>
和如下 data:

data: {
  isActive: true,
  hasError: false
}
结果渲染为:

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

直接看我们需要解决的问题:
1、我们有一个span 当点击span我们需要给他添加一个‘active’样式,而且他原本也有一个样式‘menu’

<span class="menu " :class="[activeStyle == index ? 'active':'']"  v-for="(item,index) in list" :key="index" @click="operator(item,index)">{{item.name}}</span>
export default {
    data() {
        return {
            activeStyle:-1,
        }
    },
    methods:{
        operator(item,index) {
            this.activeStyle=index
            //item相关操作逻辑
        }
    }
}

如果原先span没有class的话直接就用:class前面的class就不用管了
2、同理如果需要给标签添加一个style也可以动态绑定

<el-button size="mini" :type="primaryType==index?'primary':''" v-for="(item,index) in list" :key="index" @click="operator(item),addprimary(index)">{{item.name}}</el-button>
export default {
    data() {
        return {
            primaryType:-1,
        }
    },
    methods:{
        addprimary(index){
            this.primaryType=index
        },
        operator(item){
        
		}
    }
}

这里click我们把方法分开了operator作为具体的业务处理,addprimary方法只处理样式

上述均为个人想法,如有不对请指正

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值