Skip to content

xtf-color-picker

组件说明

xtf-color-picker 是颜色选择器组件,用于选取颜色值。支持色相/饱和度/明度面板拖拽、透明度调节、HEX/Alpha 输入、预设色板、弹出/内联模式和取色器,适用于主题配置、表单颜色字段和设计工具等场景。


基础用法

1. 最简示例

通过 v-model 绑定颜色值,并设置 show-trigger 显示点击触发器:

vue
<template>
  <xtf-color-picker v-model="color" show-trigger />
</template>

<script>
export default {
  data() {
    return {
      color: '#3B82F6'
    }
  }
}
</script>

2. 透明度与输入

通过 showAlpha 启用透明度滑块,通过 showInputs 显示 HEX 输入框:

vue
<template>
  <xtf-color-picker v-model="color" title="选择颜色" show-alpha show-inputs show-preview />
</template>

<script>
export default {
  data() {
    return {
      color: 'rgba(59, 130, 246, 0.8)'
    }
  }
}
</script>

3. 预设色板

通过 presets 设置预设颜色列表:

vue
<template>
  <xtf-color-picker v-model="color" title="主题色" show-presets :presets="presetColors" />
</template>

<script>
export default {
  data() {
    return {
      color: '#3B82F6',
      presetColors: ['#3B82F6', '#10B981', '#F59E0B', '#EF4444', '#0EA5E9', '#8B5CF6', '#EC4899']
    }
  }
}
</script>

4. 内联模式

通过 inline 将选择器直接嵌入页面:

vue
<template>
  <xtf-color-picker
    v-model="color"
    title="选择颜色"
    display="inline"
    show-preview
    show-presets
    :presets="presetColors"
  />
</template>

<script>
export default {
  data() {
    return {
      color: '#10B981',
      presetColors: ['#3B82F6', '#10B981', '#EF4444']
    }
  }
}
</script>

全部属性

属性类型默认值作用描述适用范围
modelValueString''颜色值(HEX 或 RGBA)双向绑定
titleString'选择颜色'选择器标题标题
valueString''兼容绑定值,modelValue 优先双向绑定
show / displayBoolean / Stringfalse / 'popup'弹层显示和模式(popup / inline展示
formatString'hex'输出格式:'hex' / 'hexa' / 'rgba',非法值按 'hex' 处理输出值
showAlphaBooleanfalse是否显示透明度滑块透明度
showPreviewBooleantrue是否显示预览区颜色预览
showInputsBooleantrue是否显示输入框输入框
showHexInputBooleantrue是否显示 HEX 输入HEX 输入
showAlphaInputBooleantrue是否显示 Alpha 输入Alpha 输入
showPresetsBooleantrue是否显示预设色板预设色板
showActionsBooleantrue是否显示操作按钮操作按钮
showHeaderBooleantrue是否显示头部头部显示
presetsArray[]预设颜色字符串列表;空数组时使用组件内置色板预设颜色
showTriggerBooleanfalse是否显示弹出模式的默认触发器;内联模式不显示触发器
triggerLabelString''触发器标签文字触发器标签
triggerPlaceholderString'点击选择颜色'触发器占位文字占位提示
triggerDisabledBooleanfalse触发器是否禁用禁用触发器
triggerStyleString | Object''默认触发器的自定义样式触发器样式
confirmText / cancelTextString'确认' / '取消'确认、取消按钮文字操作按钮
disabledBooleanfalse是否全局禁用禁用
closeOnClickOverlayBooleantrue点击遮罩是否关闭关闭行为
overlayBooleantrue是否显示遮罩遮罩
safeAreaInsetBottomBooleantrue是否适配底部安全区安全区
enableEyeDropperBooleanfalse是否启用取色器取色器
popupMaxHeightString | Number''弹出内容最大高度控制高度
stickyActionsBoolean | String弹出模式 true;内联模式 false操作按钮是否吸底;未传入时按展示模式决定吸底操作
customClassString''自定义类名样式覆盖
customStyleString | Object''自定义样式动态样式覆盖

事件

事件名称触发时机回调参数参数说明
update:modelValue颜色值变更时触发(value: String)新的颜色值
change确认选择时触发(value: String)确认的颜色值
confirm点击确认按钮时触发(value: String)确认的颜色值
cancel点击取消按钮时触发--
input / update:value提交颜色值时(value)新颜色值
update:show / open / close / trigger-click弹层或触发器状态变化Boolean / 无参数生命周期

插槽

trigger 插槽,作用域为 valuecoloropenPicker

vue
<template>
  <xtf-color-picker v-model="color" show-trigger @confirm="onConfirm">
    <template #trigger="{ color, openPicker }">
      <xtf-button :label="color" @click="openPicker"
    /></template>
  </xtf-color-picker>
</template>
<script>
export default {
  data() {
    return { color: '#3B82F6' }
  },
  methods: {
    onConfirm(value) {
      this.color = value
    }
  }
}
</script>

主题说明

  • 弹出层使用 xtf-popup 组件的底部弹出样式
  • 输入框使用 xtf-input 组件
  • 按钮使用 xtf-button 组件
  • 色相滑块使用原生 slider 组件
  • 颜色面板使用 movable-area / movable-view 实现拖拽

如需全局调整主题,请在 xtf-config-provider 或主题配置中覆盖相关 CSS 变量。

MIT Licensed