Skip to content

ColorPicker 颜色选择器

基础用法

  • 弹出式颜色选择器,基于 sn-drawer 底部抽屉封装,内部嵌入 sn-color-picker-view。
  • 仅点击“确定”后才将颜色值写入 v-model,点击“取消”或关闭时丢弃修改。
  • 支持面板二维取色、色相 / 透明度滑块、HEX / RGBA / HSB / HSL 四种格式输入与预设颜色。
  • 通过 ref 调用 open() 方法打开。
vue
<template>
	<sn-button type="primary" text="打开颜色选择器" @click="openPicker"></sn-button>
	<sn-color-picker ref="picker" v-model="color" title="选择颜色" @confirm="onConfirm"></sn-color-picker>
</template>

<script lang="uts" setup>

	const picker = ref<SnColorPickerComponentPublicInstance | null>(null)
	const color = ref<string>('#F5222D')

	function openPicker() {
		picker.value?.$callMethod('open')
	}

	function onConfirm(value: string) {
		console.log(value)
	}
</script>

更多演示请下载 demo 查看

属性

参数说明类型默认值可选值
v-model绑定的颜色值String#F5222D-
disabled是否禁用(取色、输入、按钮均不可用)Booleanfalsetrue | false
height弹出抽屉的高度String | Number620px-
maskClose点击遮罩是否可关闭Booleantruetrue | false
maskOpacity遮罩透明度Number0.4-
preventBack是否阻止返回键关闭Booleanfalsetrue | false
title标题,为空时不显示String''-
showClose是否显示右上角关闭按钮Booleantruetrue | false
showAlpha是否显示透明度滑块与透明度输入Booleantruetrue | false
showPresets是否显示预设颜色区域Booleantruetrue | false
format初始输入格式Stringhexhex | rgba | hsb | hsl
presetTitle预设颜色区域标题String内置颜色-
presetColors自定义预设颜色,二维数组(每行一组);为空时使用内置色板Array<Array<String>>[]-
panelHeight取色面板高度String | Number260px-
showCancel是否显示取消按钮Booleantruetrue | false
showConfirm是否显示确定按钮Booleantruetrue | false
cancelText取消按钮文字String取消-
confirmText确定按钮文字String确定-
customStyle根节点自定义样式UTSJSONObject | String''-
headerStyle标题栏自定义样式UTSJSONObject | String''-
headerClass样式类String''-
titleStyle标题文字自定义样式UTSJSONObject | String''-
titleClass样式类String''-
closeButtonStyle关闭按钮自定义样式UTSJSONObject | String''-
closeButtonClass样式类String''-
actionsStyle底部按钮区域自定义样式UTSJSONObject | String''-
actionsClass样式类String''-
cancelButtonStyle取消按钮自定义样式UTSJSONObject | String''-
cancelButtonClass样式类String''-
confirmButtonStyle确定按钮自定义样式UTSJSONObject | String''-
confirmButtonClass样式类String''-
viewStyle透传至内部 sn-color-picker-view 根节点的自定义样式UTSJSONObject | String''-
viewClass样式类String''-
panelStyle透传至内部 sn-color-picker-view,取色面板自定义样式UTSJSONObject | String''-
panelClass样式类String''-
thumbClass透传至内部 sn-color-picker-view,取色面板指示圆点样式类String''-
slidersStyle透传至内部 sn-color-picker-view,滑块容器自定义样式UTSJSONObject | String''-
slidersClass样式类String''-
hueStyle透传至内部 sn-color-picker-view,色相滑块自定义样式UTSJSONObject | String''-
hueClass样式类String''-
alphaStyle透传至内部 sn-color-picker-view,透明度滑块自定义样式UTSJSONObject | String''-
alphaClass样式类String''-
sliderThumbClass透传至内部 sn-color-picker-view,滑块指示圆点样式类String''-
inputRowStyle透传至内部 sn-color-picker-view,格式与数值输入行自定义样式UTSJSONObject | String''-
inputRowClass样式类String''-
fieldsStyle透传至内部 sn-color-picker-view,数值输入区域自定义样式UTSJSONObject | String''-
fieldsClass样式类String''-
selectStyle透传至内部 sn-color-picker-view,格式下拉选择自定义样式UTSJSONObject | String''-
selectClass样式类String''-
inputStyle透传至内部 sn-color-picker-view,数值输入框自定义样式UTSJSONObject | String''-
inputClass样式类String''-
presetsStyle透传至内部 sn-color-picker-view,预设颜色区域自定义样式UTSJSONObject | String''-
presetsClass样式类String''-
presetTitleStyle透传至内部 sn-color-picker-view,预设颜色标题自定义样式UTSJSONObject | String''-
presetTitleClass样式类String''-
presetGridStyle透传至内部 sn-color-picker-view,预设颜色网格自定义样式UTSJSONObject | String''-
presetGridClass样式类String''-
presetItemStyle透传至内部 sn-color-picker-view,预设颜色块自定义样式UTSJSONObject | String''-
presetItemClass样式类String''-

事件

名称类型说明
change(value: string) => Void点击确定写入颜色值时触发,与 v-model 同步
confirm(value: string) => Void点击确定时触发,携带确认后的颜色值
cancel() => Void点击取消时触发
open() => Void选择器打开(动画结束)时触发
close() => Void选择器关闭(动画结束)时触发
clickoverlay() => Void点击遮罩时触发

方法

名称参数返回值描述
open--打开颜色选择器,以当前 v-model 值作为初始颜色
close--关闭颜色选择器,不写入颜色值

以下属性属于 sn-color-picker-view(颜色选择容器),可直接嵌入页面单独使用,不依赖弹出层:

vue
<template>
	<sn-color-picker-view v-model="color" @change="onChange"></sn-color-picker-view>
</template>

<script lang="uts" setup>
	const color = ref<string>('#F5222D')

	function onChange(value: string) {
		console.log(value)
	}
</script>

sn-color-picker-view 属性

参数说明类型默认值可选值
v-model绑定的颜色值String#F5222D-
active是否激活;为 false 时不响应外部颜色值变化与交互Booleantruetrue | false
disabled是否禁用(拖动取色与输入均不可用)Booleanfalsetrue | false
showAlpha是否显示透明度滑块与透明度输入Booleantruetrue | false
showPresets是否显示预设颜色区域Booleantruetrue | false
format初始输入格式Stringhexhex | rgba | hsb | hsl
presetTitle预设颜色区域标题String内置颜色-
presetColors自定义预设颜色,二维数组(每行一组);为空时使用内置色板Array<Array<String>>[]-
panelHeight取色面板高度String | Number300px-
sliderHeight滑块轨道高度String | Number$24-
sliderSpacing滑块、输入行、预设区域之间的间距String | Number$12-
borderRadius取色面板与滑块的圆角大小String | Number$10-
thumbSize取色面板指示圆点大小String | Number$30-
customStyle根节点自定义样式UTSJSONObject | String''-
customClass根节点自定义样式类String''-
panelStyle取色面板自定义样式UTSJSONObject | String''-
panelClass样式类String''-
thumbClass取色面板指示圆点样式类String''-
slidersStyle滑块容器自定义样式UTSJSONObject | String''-
slidersClass样式类String''-
hueStyle色相滑块自定义样式UTSJSONObject | String''-
hueClass样式类String''-
alphaStyle透明度滑块自定义样式UTSJSONObject | String''-
alphaClass样式类String''-
sliderThumbClass滑块指示圆点样式类String''-
inputRowStyle格式与数值输入行自定义样式UTSJSONObject | String''-
inputRowClass样式类String''-
fieldsStyle数值输入区域自定义样式UTSJSONObject | String''-
fieldsClass样式类String''-
selectStyle格式下拉选择自定义样式UTSJSONObject | String''-
selectClass样式类String''-
inputStyle数值输入框自定义样式UTSJSONObject | String''-
inputClass样式类String''-
presetsStyle预设颜色区域自定义样式UTSJSONObject | String''-
presetsClass样式类String''-
presetTitleStyle预设颜色标题自定义样式UTSJSONObject | String''-
presetTitleClass样式类String''-
presetGridStyle预设颜色网格自定义样式UTSJSONObject | String''-
presetGridClass样式类String''-
presetItemStyle预设颜色块自定义样式UTSJSONObject | String''-
presetItemClass样式类String''-

sn-color-picker-view 事件

名称类型说明
change(value: string) => Void拖动取色、修改数值输入、点击预设颜色时触发,携带当前颜色值

sn-color-picker-view 方法

名称参数返回值描述
refresh--重新测量取色面板与滑块位置并同步显示(一般无需手动调用)

使用 MIT 协议