vue3自定义按钮点击变颜色实现(多选功能)

实现效果图: 默认选中第一个按钮,未选中按钮为粉色,点击时颜色变为红色

利用动态类名,当定义isChange数值和下标index相同时,赋予act类名,实现变色效果

复制代码
<template>
  <div class="page">
    <div class="btns" v-for="(item, index) in 6" :key="index">
      <div
        class="btn"
        :class="{ act: isChange.includes(index) }"
        @click="change(index)"
      >
        按钮{{ index + 1 }}
      </div>
    </div>
  </div>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const isChange = ref([]);
    const change = (index) => {
      if (isChange.value.includes(index)) {
        // 如果按钮已经被选中,则移除该按钮的索引值
        isChange.value = isChange.value.filter((item) => item !== index);
      } else {
        // 如果按钮未被选中,则添加该按钮的索引值
        isChange.value.push(index);
      }
    };

    return { isChange, change };
  },
};
</script>

<style>
.page {
  padding: 50px;
  display: flex;
  flex-wrap: wrap;
}

.btn {
  width: 60px;
  height: 30px;
  background-color: pink;
  margin: 10px;
}

.act {
  background-color: red;
}
</style>
相关推荐
LucianaiB1 天前
【元宝搜索开发者征文大赛】AI时代,学得慢就不用学?用元宝搜索打造一个教程保质期,确保每一个教程符合你的现状
前端·人工智能·ai编程
excel1 天前
JavaScript 对象池:减少高频对象创建与 GC 压力
前端
陈随易1 天前
纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS
前端·后端·程序员
子兮曰1 天前
Chrome 权限元素实战:144 与 151 的渐进增强写法
前端·javascript·chrome
IT_陈寒1 天前
Redis连接池泄漏那次,我差点把生产环境搞崩了
前端·人工智能·后端
强尼银手1 天前
我花一天做了个格斗游戏原型,判定全对,然后被「美术」劝退了
前端·javascript
石小石Orz1 天前
AI 正在蚕食我们的编码能力
前端·后端·算法
陈随易1 天前
专注飞机 FocusFlight,两个人把番茄钟做成了一趟航班
前端·后端·程序员
总要学点什么1 天前
第98篇:三维特效-材质线效果——给一条线换十种材质,虚线的图案只填了一半
开发语言·前端·javascript·ecmascript·gis·webgl·材质
10share1 天前
基于大模型的 i18n 方案:把中文原文当 Key,轻松搞定多语言维护
前端·vue.js