当前位置: 首页 > article >正文

前端开发实现自定义勾选/自定义样式,可复选,可取消勾选

在这里插入图片描述
基于后端返回数组实现多选、复选
以下代码基于vue2,如果有需要React/Vue3或者其他框架代码的,可以通过国内直连GPT4o进行代码转换,转换正确率99%
前端代码如下(直接拷贝到你的vue代码即可):

<!-- CustomCheckboxList.vue -->
<template>
  <div class="checkbox-list">
    <div 
      v-for="(item, index) in items" 
      :key="index"
      class="checkbox-item"
      @click="toggleItem(index)"
    >
      <div 
        class="custom-checkbox" 
        :style="{
          'border-color': item.color,
          'background-color': item.checked ? item.color : 'transparent'
        }"
      >
        <span 
          v-if="item.checked" 
          class="checkmark"
        ></span>
      </div>
      <span class="item-text">{{ item.text }}</span>
    </div>
  </div>
</template>

<script>
export default {
  name: 'CustomCheckboxList',
  data() {
    return {
      // 示例数据,实际使用时可以通过 props 传入
      items: [
        { text: '选项1', color: '#FF5733', checked: false },
        { text: '选项2', color: '#33FF57', checked: false },
        { text: '选项3', color: '#3357FF', checked: false },
        { text: '选项4', color: '#FF33F5', checked: false }
      ]
    }
  },
  methods: {
    toggleItem(index) {
      this.$set(this.items[index], 'checked', !this.items[index].checked)
      // 触发事件通知父组件选中状态变化
      this.$emit('change', {
        index,
        checked: this.items[index].checked,
        items: this.items
      })
    }
  }
}
</script>

<style scoped>
.checkbox-list {
  padding: 16px;
}

.checkbox-item {
  display: flex;
  align-items: center;
  margin-bottom: 12px;
  cursor: pointer;
}

.custom-checkbox {
  width: 24px;
  height: 24px;
  border: 2px solid;
  border-radius: 50%;
  margin-right: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.3s ease;
}

.checkmark {
  color: white;
  font-size: 16px;
  font-weight: bold;
}

.item-text {
  font-size: 16px;
}

/* 可选的悬停效果 */
.checkbox-item:hover .custom-checkbox {
  opacity: 0.8;
}
</style>

http://www.kler.cn/a/385017.html

相关文章:

  • 智能化健身房管理:Spring Boot与Vue的创新解决方案
  • cursor:如何注销帐号和使用流量
  • 医院信息化与智能化系统(18)
  • Java 源码中的 Unicode 逃逸问题,别被注释给骗了
  • transformer模型写诗词
  • 计算机网络——HTTP篇
  • Maven的安装配置
  • Docker与Cgroups资源控制实战
  • 如何通过网络加速器提升TikTok创作与观看体验
  • ORACLE _11G_R2_ASM 常用命令
  • 设置域名跨越访问
  • 第J5周:DenseNet+SE-Net实战
  • DNS服务器
  • 使用QtWebEngine的Mac应用如何发布App Store
  • PHP实现全站静态化
  • C++学习笔记----10、模块、头文件及各种主题(四)---- 头文件
  • 论文阅读《Structure-from-Motion Revisited》
  • Excel 无法打开文件
  • 【计网】实现reactor反应堆模型 --- 框架搭建
  • 【论文复现】基于深度学习的手势识别算法
  • 【AI写作宝-注册安全分析报告-无验证方式导致安全隐患】
  • 单细胞 RNA 测序分析的当前最佳实践:教程-文献精读80
  • Elasticsearch可视化工具Elasticvue插件用法
  • JavaWeb项目-----博客系统
  • 如何修改WordPress经典编辑器的默认高度?
  • Prompt 工程