vue中 给v-for渲染的元素动态添加移除类名

vue中 给v-for渲染的元素动态添加移除类名

今天在项目中需要做一个效果,点击对应的li改变当前的color,其他的li取消颜色,在jQuery中这很容易,由于之前已经引入了jQuery,所以直接想到了这个办法。
但是出于未知的原因,jQuery获取不到v-for出来的数据,根本找不到dom节点,所以不得不改变思路。

然后我想到了V-bind的方法。下面贴上步骤。
1.在data里面生明一个属性,默认值最好为数字类型,并且不得大于当前元素+所有兄弟元素的length,可以默认为0(第一个元素选中)

 current: '0', //如果不想默认被选中,就把值设为一个超出所有元素length的数字

2.在当前元素中添加动态class: “:class”,根据vue的class和style的绑定特性写出类似“v-bind:class="{ classred:index==current}"”,当然其他方法很多,可以根据文档自行选择

<ul class="list">
        <li v-for="(item,index) in list" :key="index" @click="handleList(index)" :class="{red:index==current}">{{item.name}}</li>
        ‘red’是你要给的类名 
</ul>

3.给元素点击事件,传入当前元素的index,把元素当前的index赋值给data里面的申明的属性

 handleList (index) {
      this.current = index;
    },

这样就大功告成了,下面展示完整代码

<!--  -->
<template>
  <div>
    <ul>
      <li v-for="(item,index) in liList"  v-on:click="addClass(index)" v-bind:class="{ classred:index==current}">{{item.name}}</li>
    </ul>
  </div>
</template>
<script>
export default {
  components: {},
  data () {
    return {
      liList:[
        {name:'张三'},
        {name:'李四'},
        {name:'王五'}
      ],
      current:0,
    };
  },
  methods: {
	    addClass:function(index){ 
	      	this.current=index;
	 	}
   }
}

</script>
<style scoped>
  .classred{ color:red; }
</style>
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js ,过渡动画是一种在元素插入、更新或除时添加动画效果的方式。`<transition>` 组件是 Vue 提供的用于处理过渡动画的组件之一。其,`move-class` 属性用于指定在元素动过程应用的 CSS 类。 `move-class` 属性允许你为元素动过程的不同状态定义不同的 CSS 类。当元素在进行插入、更新或除时,Vue 会自动添加或删除这些 CSS 类。 下面是 `move-class` 属性的详细解释: 1. **基本用法**:你可以将 `move-class` 属性添加到 `<transition>` 组件上,并指定一个用于动过程应用的 CSS 类。 ```html <transition move-class="custom-move-class"> <!-- 元素内容 --> </transition> ``` 2. **类名规则**:`move-class` 属性的值可以是一个字符串,也可以是一个对象。如果是一个字符串,它将被视为应用于所有动过程的状态;如果是一个对象,可以指定分别应用于不同状态的类名。 ```html <!-- 字符串形式 --> <transition move-class="custom-move-class"> <!-- 元素内容 --> </transition> <!-- 对象形式 --> <transition :move-class="{ enter: 'enter-class', enterActive: 'enter-active-class', leave: 'leave-class', leaveActive: 'leave-active-class', appear: 'appear-class', appearActive: 'appear-active-class' }"> <!-- 元素内容 --> </transition> ``` 在对象形式,可以定义以下类名: - `enter`:插入时的起始状态类名; - `enterActive`:插入时的过渡状态类名; - `leave`:除时的起始状态类名; - `leaveActive`:除时的过渡状态类名; - `appear`:初次渲染时的起始状态类名; - `appearActive`:初次渲染时的过渡状态类名。 3. **CSS 定义**:你需要在 CSS 样式定义这些类名,以实现相应的过渡效果。例如: ```css .custom-move-class { transition: transform 0.3s ease; } .custom-move-class-enter { transform: translateX(-100%); } .custom-move-class-enter-active { transform: translateX(0); } .custom-move-class-leave { transform: translateX(0); } .custom-move-class-leave-active { transform: translateX(100%); } ``` 在上述示例,我们定义了一个简单的过渡效果,使元素从左侧滑入和滑出。 通过使用 `move-class` 属性,你可以根据元素在插入、更新或除时的不同状态,为其添加不同的 CSS 类,从而实现自定义的过渡动画效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值