vue2-color-picker-gradient

vue2,颜色选择器,线性(纯色)、渐变选择器,支持角度、多点渐变
8,687 14
Install
npm install vue2-color-picker-gradient
Latest Version:3.0.0
Vue:2
Last Updated:Jan 12, 2026
Links: GitHub  ·  npm
Maintainer: lhb2526

vue2-color-picker-gradient

npm npm GitHub stars

Element-Plus 风格的 Vue 2 颜色选择器,支持纯色和渐变色选择。

采用 Element-Plus ColorPicker 的 API 设计,提供简洁易用的 v-model 双向绑定和标准化的事件系统。

1657866263017

✨ 特性

  • 🎨 支持线性颜色和渐变色选择
  • 🔄 v-model 双向绑定
  • 📦 多种颜色格式支持(hex、rgb、rgba、hsl、hsla)
  • 🎯 Element-Plus 风格的 API 设计
  • 🌈 渐变色支持角度调节和多色点
  • 💪 TypeScript 友好
  • 📱 响应式设计

Live Demo

📦 安装

NPM

npm install vue2-color-picker-gradient
# 或
yarn add vue2-color-picker-gradient

🔨 使用

全局注册

import Vue from 'vue'
import ColorPicker from 'vue2-color-picker-gradient'

Vue.use(ColorPicker)

局部注册

import ColorPicker from 'vue2-color-picker-gradient'

export default {
  components: {
    ColorPicker
  }
}

📖 示例

基础用法

<template>
  <!-- 线性颜色选择器 -->
  <ColorPicker v-model="color" @change="handleChange" />
</template>

<script>
export default {
  data() {
    return {
      color: '#409EFF'
    }
  },
  methods: {
    handleChange(value) {
      console.log('颜色改变:', value)
    }
  }
}
</script>

模式切换

组件内置了纯色/渐变模式切换功能,用户可以在选择器面板内自由切换:

<template>
  <ColorPicker
    v-model="color"
    @change="handleChange"
    @mode-change="handleModeChange"
  />
</template>

<script>
export default {
  data() {
    return {
      color: '#409EFF'
    }
  },
  methods: {
    handleChange(value) {
      console.log('颜色改变:', value)
    },
    handleModeChange(mode) {
      console.log('模式切换为:', mode) // 'linear' 或 'gradient'
    }
  }
}
</script>

禁用模式切换

如果你希望固定为某个模式,可以使用 disable-mode-switch 属性:

<template>
  <!-- 固定为纯色模式 -->
  <ColorPicker v-model="color" mode="linear" disable-mode-switch />

  <!-- 固定为渐变模式 -->
  <ColorPicker v-model="gradient" mode="gradient" disable-mode-switch />
</template>

带透明度

<template>
  <ColorPicker
    v-model="color"
    show-alpha
    color-format="rgba"
    @change="handleChange"
  />
</template>

<script>
export default {
  data() {
    return {
      color: 'rgba(64, 158, 255, 0.8)'
    }
  }
}
</script>

渐变色选择器

<template>
  <ColorPicker
    v-model="gradient"
    mode="gradient"
    @change="handleGradientChange"
  />
</template>

<script>
export default {
  data() {
    return {
      gradient: 'linear-gradient(90deg, #fff 0%, #000 100%)'
    }
  },
  methods: {
    handleGradientChange(value) {
      console.log('渐变改变:', value)
    }
  }
}
</script>

禁用角度调节

<template>
  <ColorPicker
    v-model="gradient"
    mode="gradient"
    disable-deg
  />
</template>

📚 API

Props

参数 说明 类型 可选值 默认值
modelValue / v-model 绑定值 string — '#409EFF'
mode 组件默认模式 string linear / gradient linear
disable-mode-switch 是否禁用内部模式切换按钮 boolean — false
show-alpha 是否支持透明度选择 boolean — false
color-format 颜色格式 string hex / rgb / rgba / hsl / hsla hex
predefine 预定义颜色 array — []
size 组件尺寸 string large / default / small default
disabled 是否禁用 boolean — false
disable-deg 渐变模式下是否禁用角度调节 boolean — false
popper-class 下拉框的类名 string — ''

Events

事件名 说明 回调参数
update:modelValue v-model 更新事件 (value: string)
change 颜色值改变时触发(确认后) (value: string)
active-change 实时颜色改变(拖动时) (value: string)
visible-change 面板显示/隐藏时触发 (visible: boolean)
mode-change 模式切换时触发 (mode: 'linear' | 'gradient')

颜色值格式

线性模式(mode="linear")
  • hex: '#409EFF' 或 '#409EFF80'(带透明度)
  • rgb: 'rgb(64, 158, 255)'
  • rgba: 'rgba(64, 158, 255, 0.8)'
  • hsl: 'hsl(210, 100%, 62%)'
  • hsla: 'hsla(210, 100%, 62%, 0.8)'
渐变模式(mode="gradient")

CSS gradient 字符串,例如:

linear-gradient(90deg, rgba(255, 255, 255, 1) 0%, rgba(0, 0, 0, 1) 100%)

🎯 渐变色使用技巧

添加颜色点

点击渐变条可以添加新的颜色点

删除颜色点

选中颜色点后,按 Backspace 或 Delete 键可删除(至少保留2个颜色点)

调整颜色点位置

拖动颜色点可调整其在渐变条中的位置

调整渐变角度

使用角度滑块可调整渐变方向(0-360度)

🔄 从旧版本迁移

如果你正在使用旧版本的 API,这里是迁移指南:

Props 变更

旧 API 新 API 说明
type mode 重命名为更清晰的 mode
pColor v-model 使用 v-model 绑定颜色值(字符串)
pColors v-model 渐变模式下使用 v-model(CSS gradient 字符串)
pDeg 包含在 v-model 中 角度信息包含在 gradient 字符串中
disabledColorDeg disable-deg 重命名为 kebab-case
showClose 已移除 简化 UI,统一风格
closeOnClickBody 已移除 简化交互逻辑
titleConfig 已移除 简化 UI 配置

Events 变更

旧 API 新 API 说明
@changeColor @change 标准化事件名
@onClose @visible-change 更标准的事件命名

迁移示例

旧版本:

<ColorPicker
  type="linear"
  :p-color="pColor"
  :p-deg="90"
  :show-close="true"
  @changeColor="changeColor"
  @onClose="onClosePicker"
/>

新版本:

<ColorPicker
  mode="linear"
  v-model="color"
  @change="handleChange"
  @visible-change="handleVisibleChange"
/>

🛠️ 开发

本地开发

# 安装依赖
yarn install

# 启动开发服务器
yarn dev

# 构建库文件
yarn build

# 构建演示文件
yarn build:demo

# 代码检查
yarn lint

# 代码格式化
yarn format

📄 许可证

MIT

🙏 致谢

Related Packages

vue3-color-picker-gradient

vue3,颜色选择器,线性(纯色)、渐变选择器,支持角度、多点渐变

1,973 6
guapikeji-color-picker-v3

Vue3 颜色选择器,支持纯色和渐变色,支持角度调节、多点渐变

905 0
@cyhnkckali/vue3-color-picker

A color picker component library

621,550 107
vue-iro-color-picker

Vue color picker

1,764 9
vue-swatches

Help the user picking beautiful colors!

485,747 565

Version History

Version Released Vue License
3.0.0 2.7.16
2.0.0 2.7.16
1.0.0 2.7.16
0.15.0 ^2.6.11
0.14.0 ^2.6.11