在 Vue 3 的 <script setup> 语法中,可以使用 ref 或 reactive 来追踪和管理 DOM 元素的引用。然后,你可以使用事件监听器(如 @click)来响应点击事件,并为当前点击的 <li> 元素添加 active 类名。
<template> <ul> <li v-for="(item, index) in items" :key="index" :class="{ active: currentIndex === index }" @click="setCurrentIndex(index)"> {{ item }} </li> </ul>
</template> <script setup>
import { ref } from 'vue'; const items = [ '全部', '节日祝福', '科普服务', // ... 其他项目 '种草带货', '知识口播', '热点资讯'
]; const currentIndex = ref(0); // 默认激活第一个项目 function setCurrentIndex(index) { currentIndex.value = index;
}
</script> <style scoped>
.active { /* 这里定义active类的样式 */ background-color: #f44336; color: white;
}
</style>
在这个例子中,定义了一个 items 数组来存储所有的列表项,以及一个 currentIndex 的 ref 来追踪当前激活的列表项的索引。使用 v-for 指令来遍历 items 数组,并为每个 <li> 元素添加一个点击事件监听器 @click,它调用 setCurrentIndex 方法来更新 currentIndex 的值。
:class="{ active: currentIndex === index }" 是一个对象语法,用于动态绑定类名。当 currentIndex 等于当前循环的 index 时,active 类就会被添加到对应的 <li> 元素上。
在 <style> 标签中,定义了 .active 类的样式,你可以根据需要自定义这个样式。
这样,当你点击任何一个 <li> 元素时,它都会获得 active 类名,并且之前的 active 类名会被移除。