当前位置:首页 > VUE

vue实现当前元素高亮

2026-01-22 15:57:07VUE

Vue 实现当前元素高亮的方法

使用动态 class 绑定

通过 v-bind:class 或简写 :class 动态切换高亮样式。定义一个变量存储当前高亮元素的索引或唯一标识,点击时更新该变量。

<template>
  <div>
    <div 
      v-for="(item, index) in items" 
      :key="index"
      :class="{ 'highlight': activeIndex === index }"
      @click="activeIndex = index"
    >
      {{ item }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: ['Item 1', 'Item 2', 'Item 3'],
      activeIndex: null
    };
  }
};
</script>

<style>
.highlight {
  background-color: yellow;
}
</style>

使用计算属性

对于复杂逻辑,可通过计算属性返回高亮状态。

<template>
  <div>
    <div 
      v-for="item in items" 
      :key="item.id"
      :class="getHighlightClass(item.id)"
      @click="setActiveItem(item.id)"
    >
      {{ item.text }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, text: 'Item 1' },
        { id: 2, text: 'Item 2' }
      ],
      activeId: null
    };
  },
  methods: {
    setActiveItem(id) {
      this.activeId = id;
    }
  },
  computed: {
    getHighlightClass() {
      return (id) => ({ 'highlight': this.activeId === id });
    }
  }
};
</script>

使用 Vuex 管理状态

若项目使用 Vuex,可将高亮状态集中管理。

// store.js
export default new Vuex.Store({
  state: {
    activeItemId: null
  },
  mutations: {
    setActiveItem(state, id) {
      state.activeItemId = id;
    }
  }
});

组件中通过 mapStatemapMutations 使用:

<template>
  <div>
    <div 
      v-for="item in items" 
      :key="item.id"
      :class="{ 'highlight': activeItemId === item.id }"
      @click="setActiveItem(item.id)"
    >
      {{ item.text }}
    </div>
  </div>
</template>

<script>
import { mapState, mapMutations } from 'vuex';

export default {
  computed: {
    ...mapState(['activeItemId'])
  },
  methods: {
    ...mapMutations(['setActiveItem'])
  }
};
</script>

使用路由高亮

若高亮与路由相关,可通过 router-linkactive-class 实现。

<template>
  <div>
    <router-link 
      v-for="route in routes" 
      :key="route.path"
      :to="route.path"
      active-class="highlight"
    >
      {{ route.name }}
    </router-link>
  </div>
</template>

注意事项

  • 样式优先级:确保高亮样式的优先级高于默认样式。
  • 性能优化:列表较大时,避免频繁的 DOM 操作,可使用虚拟滚动。
  • 无障碍:为高亮元素添加 aria-current 属性提升可访问性。

vue实现当前元素高亮

标签: 元素vue
分享给朋友:

相关文章

vue中实现显示和隐藏

vue中实现显示和隐藏

控制显示与隐藏的方法 在Vue中实现元素的显示和隐藏可以通过多种方式完成,以下是常见的几种方法: 1. 使用v-if指令v-if根据条件动态添加或移除DOM元素,适合需要频繁切换的场景。当条件为fa…

vue实现活动倒计时

vue实现活动倒计时

实现活动倒计时的基本思路 在Vue中实现活动倒计时通常需要获取当前时间与活动结束时间的差值,并将其转换为天、小时、分钟、秒的格式展示。通过定时器每秒更新显示的时间。 定义倒计时数据 在Vue组件的…

vue实现轮询

vue实现轮询

实现轮询的基本方法 在Vue中实现轮询可以通过setInterval或setTimeout配合递归调用完成。轮询通常用于定期向服务器请求数据更新。 使用setInterval的简单示例: data…

vue实现截图

vue实现截图

Vue 实现截图的方法 使用 html2canvas 库 安装 html2canvas 库: npm install html2canvas 在 Vue 组件中使用: import html2ca…

vue实现过滤

vue实现过滤

Vue实现过滤的方法 在Vue中实现数据过滤可以通过多种方式完成,以下是几种常见的方法: 使用计算属性过滤 计算属性是Vue中处理数据过滤的理想选择,它们基于响应式依赖进行缓存,只有在相关依赖发生改…

vue实现批量

vue实现批量

Vue 实现批量操作的方法 在 Vue 中实现批量操作通常涉及选择多个项目并执行统一处理,例如批量删除、批量更新等。以下是几种常见实现方式: 表格多选批量操作 使用 el-table 配合复选框实现…