Skip to content

FxColorPicker 颜色选择器

点击触发色块,在浮层中选色。基于 FxColorPickerPanel + FxTooltip,支持透明度、预定义色与尺寸。

FxColorPicker 属于 @fx/components

基础用法

v-model 绑定颜色字符串(hex / rgb / rgba / hsl 等)。

透明度

show-alpha 开启透明度滑块,支持 rgba / hsla 等带 alpha 通道的格式。

预定义颜色

predefine 传入预设色板,用户可快速选择。

尺寸

size 控制触发色块大小(large / default / small)。

即时模式

immediate 开启后选择即提交 v-model:拖动过程实时同步 update:modelValue / active-changechange 只在离散完成点(色块点击、拖动结束、输入确认)触发;底部「确定」按钮退化为「完成 / 关闭」,关闭面板不回退已选值。

即时模式下可另设 footer=false 隐藏面板底部(输入框与按钮,下例第二个选择器);确认模式下设置 footer=false 视为无效,底部照常渲染。

历史色与圆形

history 在面板底部上方显示最近选择的颜色(跨实例共享并持久化,上限 8 条);predefine 与 history 区块各带分组标题(「预设」/「最近使用」)与 small 分割线;round 使触发器与色块呈圆形。

局部引入

ts
import { FxColorPicker } from "@fx/components"

API

Attributes

属性说明类型默认值
model-value / v-model绑定值string | null
show-alpha是否显示透明度滑块booleanfalse
color-formatv-model 的颜色格式'rgb' | 'hex' | 'prgb' | 'hsl' | 'hsv' | 'name' | 'hex8'
disabled是否禁用booleanfalse
clearable是否显示清空按钮booleantrue
size尺寸'large' | 'default' | 'small'default
predefine预定义颜色string[]
footer是否显示面板底部(输入框与清空/确定按钮),仅 immediate 模式下可设为 falsebooleantrue
immediate即时提交(选择即更新 v-model)booleanfalse
history是否显示上次选择色块booleanfalse
round触发器与色块是否为圆形booleanfalse
popper-class浮层自定义类名string | object | array
popper-style浮层自定义样式string | CSSProperties
teleported是否 teleport 到 bodybooleantrue
append-to浮层挂载目标string | HTMLElementbody
persistent浮层是否持久化booleantrue
tabindextabindexstring | number0
validate-event是否触发表单校验booleantrue
value-on-clear清空时的返回值string | null
aria-label无障碍标签string颜色选择器

Events

名称说明
change值变化(确认 / 清空时触发)
active-change面板内当前色实时变化
focus触发元素聚焦
blur触发元素失焦
clear清空

Slots

名称说明
default触发区(默认渲染色块)
footer面板底部(默认放清空 / 确认按钮;footer=false 时不渲染)

Exposes

名称说明
color当前颜色对象(基于 @ctrl/tinycolor
show手动展开
hide手动收起
focus聚焦触发元素
blur失焦触发元素

实现说明

  • 浮层引擎基于 FxTooltip(@floating-ui/dom),点击外部 / Esc 关闭
  • 颜色核心基于 @ctrl/tinycolor,支持 hex/rgb/hsl/hsv 等格式互转
  • 历史色通过 localStorage(key fx-color-picker:history)跨实例共享:新色置顶去重、上限 8 条、空值与清空不入
  • 样式走 @fx/styles token,亮暗自动跟随