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

element-ui制作多颜色选择器

在这里插入图片描述
将颜色存储到一个数组中去。

<template>
  <div class="color-picker-container" style="margin-top: 10px;">
    <!-- 显示已选颜色 -->
    <div class="color-selection">
      <div
        v-for="(color, index) in selectedColors"
        :key="index"
        class="color-chip"
        :style="{ backgroundColor: color }"
      >
        <button @click="removeColor(index)" class="remove-btn">X</button>
      </div>
      <!-- 颜色选择器 -->
      <el-color-picker
        v-if="showColorPicker"
        v-model="currentColor"
        @change="addColor"
        show-alpha
        size="small"
        class="color-picker"
      />
      <div v-if="selectedColors.length < maxColors" class="add-color-btn" @click="showColorPicker = !showColorPicker">
        +
      </div>
    </div>


  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedColors: ['#409EFF', '#67C23A', '#E6A23C', '#F56C6C', '#7265E6', '#EBEEF5'], // 默认6个颜色
      currentColor: null,
      showColorPicker: false,
      maxColors: 10 // 最大可选颜色数量
    };
  },
  methods: {
    addColor(color) {
      if (color && this.selectedColors.length < this.maxColors && !this.selectedColors.includes(color)) {
        this.selectedColors.push(color);
      }
      this.showColorPicker = false;
    },
    removeColor(index) {
      this.selectedColors.splice(index, 1);
    },
  },
};
</script>
<style scoped>
.color-picker-container {
  position: relative;
}

.color-selection {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 16px;
}

.color-chip {
  width: 40px;
  height: 40px;
  border-radius: 8px; /* 圆角 */
  position: relative;
  cursor: pointer;
  transition: transform 0.1s ease-in-out;
}

.color-chip:hover {
  transform: scale(1.1); /* 悬停时放大 */
}

.remove-btn {
  position: absolute;
  top: -6px;
  right: -6px;
  background-color: white;
  border: 1px solid #ccc;
  border-radius: 50%;
  width: 16px;
  height: 16px;
  line-height: 14px;
  text-align: center;
  font-size: 10px;
  cursor: pointer;
  display: none;
}

.color-chip:hover .remove-btn {
  display: block;
}

.add-color-btn {
  width: 40px;
  height: 40px;
  border-radius: 8px; /* 圆角 */
  background-color: #f0f0f0;
  border: 1px dashed #dcdcdc;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  color: #8c8c8c;
  cursor: pointer;
  transition: background-color 0.3s ease;
}

.add-color-btn:hover {
  background-color: #e0e0e0;
}

.color-picker {
  /*position: absolute;*/
  bottom: -5px;
  left: 0;
}
</style>


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

相关文章:

  • Nmap之企业漏洞扫描(Enterprise Vulnerability Scanning for Nmap)
  • Ability Kit-程序框架服务(类似Android Activity)
  • 算法(蓝桥杯)贪心算法7——过河的最短时间问题解析
  • 【Linux】Socket编程-TCP构建自己的C++服务器
  • 【Web】Web API 简介
  • 《鸿蒙Next微内核:解锁人工智能决策树并行计算的加速密码》
  • Vue3响应式原理: Proxy实现解析
  • BERT详解
  • linux解压命令(可整理到CSDN)
  • 【gin】模型绑定、参数验证及文件上传go案例演示
  • w163美食推荐商城
  • unity2022以上导出到AndroidStudio后更新步骤
  • 智能学习环境(Intelligent Learning Environment,ILE)
  • 如何发现架构中的耦合(5大场景)?(第36讲)
  • G1原理—10.如何优化G1中的FGC
  • 几种矩阵内积的定义和计算
  • git使用-合并代码查看是否冲突解决冲突
  • 基于springboot+vue.js+uniapp技术开发的一套大型企业MES生产管理系统源码,支持多端管理
  • 麒麟V10系统上安装Oracle
  • Golang:报错no required module provides package github.com/xx的解决方法
  • Oracle连接数满问题解决及排查 ORA-00020:maximumnumber of processes
  • 【人工智能】从Keras到TensorFlow 2.0:深入掌握Python深度学习技术
  • 【统计的思想】假设检验(一)
  • 如何在 Rocky Linux 上安装极狐GitLab?
  • stm32控制直流电机程序
  • 无限世界中的具身导航与交互!InfiniteWorld:通用视觉语言机器人交互的统一仿真框架