生态产品多个设计器现已发布正式版

查看生态总览
跳转到内容

ColorPicker 颜色选择器 ​

在色域中自由选取一个颜色:触发按钮显示当前色,浮层内包含取色面、色相与透明度两条滑块、数值框、屏幕取色与预设色板。它是颜色家族的组合件:两条滑块是颜色滑块,预设色板是颜色色块选择器,触发按钮内的色块与颜色色块同族;只需要其中一件时不使用完整的选择器。

用法 ​

取色面选择饱和度与明度,下方一条色相滑块;滑块是内嵌的颜色滑块组件,Vue / React 的挂载点不写子节点即自动铺开

组件结构 ​

加粗的是必需部件。

data-scope="color-picker":root · label · control · tag-list · trigger · clear-trigger · value-text · swatch · positioner · content · saturation-area · area-thumb · hue-slider · alpha-slider · channel-input · eye-dropper-trigger · swatch-picker · recent-swatch-picker · confirm-trigger · hidden-input

示例 ​

预设色板 ​

swatches 提供一组常用颜色,浮层中内嵌一台色块选择器:方向键在格子间移动、按颜色比较选中

禁用 ​

禁止更改颜色

透明度 ​

alpha 开启后值串带透明度,浮层中多一条透明度滑块;两条滑块共用同一份工作色,调节色相不会把透明度归 1

精确输入 ​

输入色值或使用屏幕取色

oklch 写法 ​

format="oklch" 让值串与主题令牌同一色空间,取到的颜色可以直接写回令牌;工作色在 sRGB 内,超出 sRGB 的 oklch 值按通道夹回

常驻形态 ​

inline 让取色面直接铺在页面里,与浮层形态同一台机器、同一组部件,只是不写 control、trigger 与 positioner;取色面不抢焦点,也不因点外或 Esc 收起

当前:#3b82f6

最近使用色 ​

一轮取色结束(浮层收起,或常驻形态下焦点离开取色面)且颜色变了,就记进最近使用色,最新的在最前、同色只留一份;受控写回由宿主保存,刷新后还在

多选成标签 ​

selectionMode="multiple" 时浮层里调出的颜色是草稿,按「添加」收进值、浮层不收,可以接着添;预设色板点一下切换选中。选中的颜色在输入行里排成带色点的标签,点叉或在展开钮上按退格摘掉

#00a98e#3b82f6
当前值:#00a98e、#3b82f6

设计指引 ​

何时使用 ​

  • 用户需要自定义主题色、标注色或画布颜色,且不限于固定选项。
  • 需要挑出一组颜色(配色方案、图表系列色)时,用多选把它们收成一排标签。
  • 既需要可视化挑选(取色面、滑块)也需要精确输入(十六进制、分量框)。
  • 需要从屏幕取色。

何时不用 ​

特性 ​

  • 工作色始终是 HSVA:取色面两轴是饱和度与明度,纯黑与灰度处的色相由锚点保持,拖到黑色再拉回时色相不丢失。
  • format 决定值串写法(hex / rgba / hsla / oklch),alpha 决定是否带透明度;关闭时透明度滑块与输入框整体禁用。oklch 与令牌同一色空间,便于把取到的颜色写回主题;工作色在 sRGB 内,超出 sRGB 的 oklch 值按通道夹回。HSB 不是 CSS 颜色写法,不作值串格式,需要 HSB 数值时读 hsva。
  • 色相与透明度两条滑块是内嵌的颜色滑块:整份工作色交给它们,调整色相不会把透明度归 1;键盘(方向键、PageUp / PageDown、Home / End、Shift 大步)与拖动都由滑块自身处理。
  • 预设色板是内嵌的色块选择器:方向键在格子间移动并选中,当前颜色所在格按颜色比较(写法不同也能匹配)。
  • 数值框输入只保留草稿,可解析时立即取值;不可解析时保留原文并报输入错误,回车同时拦截表单提交。
  • 屏幕取色通过浮层内的按钮触发,环境不提供 EyeDropper 时始终禁用;取到的颜色与色板、外部 setValue 走同一条取值路径。
  • 格式、输入、颜色解析与屏幕取色四路错误相互独立,修正一路不影响其他路。
  • 值恒为颜色串数组:单选是一项,宿主可以写裸串;onValueChange 的 value 恒为数组。
  • 单选给空数组是未选:色块不画颜色、画一道斜线,值文字显示 placeholder(缺省取 translations.placeholder),表单影子是空串,required 据此拦下;打开浮层从 #000000 起调,选定一个颜色才有值。value 与 defaultValue 都不给时照旧从 #000000 起、算作已选。
  • 单选有值时盒里露出清空钮(clear-trigger):按下清回未选,先发 onValueChange(value 为空数组)再发 onClear,不碰开合;未选、多选、禁用、只读与常驻形态时收起。setValue([]) 同样清回未选,不发 onClear。
  • 受控 value 与 open:宿主不写回时界面不变化,回调照常发出;表单出口经 hidden-input 提交选中的值串。
  • 多选(selectionMode="multiple")时浮层里调出的工作色是草稿,按「添加」(confirm-trigger)收进值,浮层不收、工作色留着,接着调就能添下一个;预设色板点一下切换选中,格子本身不再标选中。工作色解析不出、已经选过(按颜色比较,写法不同也算同一个)或到了 maxSelected 时「添加」不可按。
  • 多选的选中值在输入行里排成标签(与选择器多选同一套库内标签),按加入先后:每枚标签前一个该颜色的色点,值文字收起,触发钮只剩一颗显示工作色的色块并成为键盘入口,在它上面按退格摘掉最后一个,点标签上的叉摘掉那一个;标签不截短、一行放不下就折行,超过 maxTagCount(默认 3)的折进 +N;表单一个选中值一份同名隐藏输入。
  • inline 是常驻形态:取色面直接铺在页面里,与浮层形态同一台机器、同一组部件,只是不写 control / trigger / positioner。取色面是静态内容面(surface 圆角、描边、不落影),不抢焦点、不入层栈,点外与 Escape 都不收起。
  • 最近使用色:一轮取色结束且颜色变了就记一笔,最新的在最前、同色只留一份、最多留 maxRecentColors 个(缺省 8)。浮层形态以收起为一轮,常驻形态以焦点离开取色面为一轮;只经 setValue 改的不记。recentColors 可受控,由宿主持久化;recent-swatch-picker 挂载点渲染它们,还没有时收起。

组合 ​

  • 四个挂载点 hue-slider / alpha-slider / swatch-picker / recent-swatch-picker 同时充当内嵌组件的根节点,内部放置的是颜色滑块与颜色色块选择器自己的部件;不写子节点时自动铺开最简结构。
  • 放入表单字段承接标题、说明与错误信息,disabled / readOnly 随字段下发。
  • 与颜色字段并排:选择器挑颜色,字段显示并微调该值。

最佳实践 ​

  • 通过 swatches 提供常用色,多数用户从这里即可完成选择。
  • 触发按钮内同时放色块与值串,读屏与视觉各有一路。
  • 多选时在浮层末尾放「添加」,并配上预设色板:常用色点一下就进出,自定义色调好再添。
  • 需要精确输入时放数值框;一个十六进制框比四个分量框更节省空间。

反模式 ​

  • 只显示颜色不显示数值,颜色不能是唯一的信息通道。
  • 有对比度要求的场景不提供校验反馈。
  • 关闭 alpha 后仍保留透明度滑块,整条禁用的控件只会造成困惑。

API 参考 ​

产物 ​

层值
自定义元素<xh-color-picker>
Vue 组件XhColorPickerAlphaSlider XhColorPickerAreaThumb XhColorPickerChannelInput XhColorPickerClearTrigger XhColorPickerConfirmTrigger XhColorPickerContent XhColorPickerControl XhColorPickerEyeDropperTrigger XhColorPickerHiddenInput XhColorPickerHueSlider XhColorPickerItemDeleteTrigger XhColorPickerLabel XhColorPickerOverflowTag XhColorPickerPositioner XhColorPickerRecentSwatchPicker XhColorPickerRoot XhColorPickerSaturationArea XhColorPickerSwatch XhColorPickerSwatchPicker XhColorPickerTag XhColorPickerTagLabel XhColorPickerTagList XhColorPickerTrigger XhColorPickerValueText
组合式函数useColorPicker
状态机colorPickerMachine
皮肤@xihan-ui/styles/color-picker.css

Props ​

属性类型必填说明
labelledboolean作者渲染了 label 部件时置真,由适配器统计而不是判断标题文字是否有值。 为假时可聚焦部件不把 label 的 id 写进 aria-labelledby:指向未渲染的 id 是无效引用,作者写在控件上的 aria-label 也会被它压住。
ariaLabelstring不显示出来的名字,写成 aria-label 落在与字段标签同一个部件上。 放进字段(字段接线)或渲染了 label 部件时名字以它们为准,aria-labelledby 盖过它。
valuestring | string[]选中的颜色,值串数组。提供即受控:写入只发 onValueChange 不落内部值。 单选可写裸串,内部一律归一为数组;单选给空数组时是未选:色块不画颜色、值文字显示 placeholder, 取色面从 #000000 起调,选定一个颜色才有值。value 与 defaultValue 都不给时从 #000000 起、算作已选。
defaultValuestring | string[]
selectionModeColorPickerSelectionMode选择模式,默认 single。
maxSelectednumbermultiple 下最多选几个颜色:选满后「添加」不可按、色块只能点掉已选的。非整数向下取整,小于 1 或不是有限数时不设上限。
maxTagCountnumber多选时输入行最多摆几枚标签,其余折进 +N 那一枚;默认 3。
formatColorFormat值串的写法,默认 hex。修改它只改变对外的序列化,工作色恒为 HSVA。
openboolean展开态。提供即受控:内部不再自行修改,只发 onOpenChange。
defaultOpenboolean
disabledboolean整个控件禁用:trigger 与两个按钮使用原生 disabled,取色区与滑杆退出 Tab 序列。
readOnlyboolean只读:浮层照常展开(可查看当前颜色),但任何改值的动作都不发生。
invalidboolean校验失败标注:触发钮写 aria-invalid,各部件写 data-invalid,字段外壳按它描红。
requiredboolean必填:各部件写 data-required(标题据此画星号),表单影子写原生 required;触发钮是按钮,不收 aria-required。
swatchesstring[]预设色板:交给内嵌的色块选择器铺格,选中的格按颜色比较。
inlineboolean常驻形态:取色面直接铺在页面里,不经触发钮与浮层,与浮层形态共用同一台机器与同一组部件。 开着时恒为展开态,open / defaultOpen / onOpenChange 不起作用,也不接管焦点与点外关闭。
recentColorsstring[]最近使用色(最新的在最前)。提供即受控:内部只发 onRecentColorsChange,由宿主写回(也由宿主持久化)。 一次取色结束时记一笔:浮层形态在收起那一刻,常驻形态在焦点离开取色面那一刻; 这一轮里颜色没变、或只经 api.setValue 改过就不记。
defaultRecentColorsstring[]
maxRecentColorsnumber最近使用色最多留几个,默认 8;写 0 即不记。
namestring表单字段名;提供后表单影子才带 name 并参与提交。
placeholderstring单选未选时值文字显示的提示;缺省取 translations.placeholder。
alphaboolean带透明度,默认关闭。关闭时值串恒为不透明,透明度滑杆与输入框整条禁用。
sizeSize尺寸:sm / md / lg。
variantControlVariant盒的形态:outline / subtle / ghost,默认 outline,与同族字段同一套字段外壳。
dirDirection文字方向。只改写横轴(取色区的饱和度、通道滑杆)上左右两键与指针的语义。
placementPlacement
offsetnumber
translationsPartial<ColorPickerTranslations>
onValueChange(details: ColorPickerValueChangeDetails) => voidvalue 变化意图回调;受控时是唯一出口,非受控时随内部写入一并通知。
onClear() => void用户按清空钮清掉了值:先发 onValueChange(value 为空数组),再发它。程序化的 setValue 不发。
onOpenChange(details: ColorPickerOpenChangeDetails) => voidopen 变化意图回调;受控时是唯一出口,非受控时随内部转移一并通知。
onRecentColorsChange(details: ColorPickerRecentColorsChangeDetails) => void最近使用色变化意图回调;受控时是唯一出口。
onColorError(details: ColorPickerErrorDetails) => void格式、文本、颜色解析或屏幕取色失败;与 value / open 事件独立。

事件 ​

自定义元素将载荷放在 detail;Vue 使用同名 emit。

事件载荷说明
value-changeColorPickerValueChangeDetails选中的颜色变化;detail 为 { value: string[] },单选恒为一项
open-changeColorPickerOpenChangeDetailsopen 状态变化;detail 为 { open: boolean }
color-errorColorPickerErrorDetails格式、输入、颜色解析或屏幕取色失败;detail 为判别式错误对象
recent-colors-changeColorPickerRecentColorsChangeDetails一轮取色结束、颜色变了,最近使用色随之变化;detail 为 { recentColors: string[] }
clear``用户按清空钮(clear-trigger)清掉了值;先发值变化(value 为空数组),再发它。程序化的 setValue([]) 不发。

插槽 ​

仅列出带载荷的插槽。

Vue 组件插槽载荷说明
XhColorPickerRootdefaultColorPickerRootSlotProps
XhColorPickerRootlabel—

React 适配器 props ​

只列各组件自己声明的那些:继承自 ComponentPropsWithRef 的 DOM 属性不在其中,根组件上与上面 Props 表同名的也不重复列。Vue 的对应物是上面的插槽表。

React 组件属性类型必填说明
XhColorPickerChannelInputchannelColorPickerInputChannel该输入框编辑的通道:hex 是整串,r/g/b 是分量,a 是透明度百分数;默认或无法识别时按 hex 处理。
XhColorPickerPositionercontainer() => Element | null浮层挂载的容器;未提供时按全局配置,再未提供时挂载到 body。
XhColorPickerRootlabelReactNode标题。不给 children 时铺 label 部件。
XhColorPickerRootchildrenSlotChildren<ColorPickerRootSlotProps>
XhColorPickerTagvaluestring是它代表哪个选中颜色。

状态 ​

公开状态写入 data-state。

部件取值
root'open' | 'closed'
label'open' | 'closed'
control'open' | 'closed'
trigger'open' | 'closed'
value-text'open' | 'closed'
swatch'open' | 'closed'
positioner'open' | 'closed'
content'open' | 'closed'
saturation-area'open' | 'closed'
area-thumb'open' | 'closed'
channel-input'open' | 'closed'
eye-dropper-trigger'picking' | 'open' | 'closed'

以下名称仅用于内部状态机。

状态:closed · open · open.idle · open.dragging · open.picking

事件:OPEN · TOGGLE · CLOSE · CONTROLLED.OPEN · CONTROLLED.CLOSE · VALUE.SET · SELECTED.SET · VALUE.CLEAR · VALUE.ADD · VALUE.REMOVE · VALUE.TOGGLE · TAG_LIST.TRACKED · AREA.SET · AREA.STEP · AREA.TO_EDGE · HSVA.SET · INPUT.CHANGE · INPUT.COMMIT · DRAG.START · DRAG.MOVE · DRAG.END · EYE_DROPPER.OPEN · EYE_DROPPER.RESULT · EYE_DROPPER.CANCEL · EYE_DROPPER.ERROR · ERROR.CLEAR · SESSION.END · RECENT.CLEAR · INLINE.SYNC · INLINE.CLOSE · FORM.RESET · PRESS.START · PRESS.END

判据:isOpenControlled · canInteract · canPick · isInline

connect API ​

getXxxProps() 返回对应部件的宿主属性。

成员类型说明
openboolean
valuestring[]选中的颜色,值串数组(与 onValueChange 发出的是同一个):单选是一项、未选时为空,多选按加入先后。
selectionModeColorPickerSelectionMode
colorstring工作色的值串:取色面从它调起;单选时就是选中值,多选时是浮层里调着的草稿。单选未选时是取色面的起调色 #000000。
emptyboolean单选还没选颜色:色块不画颜色,值文字显示 placeholder,清空钮收起。
valueTextstring值文字显示的内容:工作色的值串;单选未选时是 placeholder。
rgbaColorRgba
hsvaColorHsva工作色。取色区与色相滑杆读取的都是它。
formatColorFormat
alphaboolean
disabledboolean
readOnlyboolean
invalidboolean
requiredboolean
draggingboolean指针正在拖动某一部位。
pickingboolean屏幕取色正在进行。
eyeDropperSupportedboolean
errorsColorPickerErrors格式、文本、颜色解析与屏幕取色四路互不覆盖的错误。
swatchesstring[]预设色板(原样透传 swatches prop,默认为空数组)。
inlineboolean常驻形态。
recentColorsstring[]最近使用色,最新的在最前。
canAddboolean多选时「添加」此刻可按:工作色还没选过、也没到 maxSelected。
tagsColorPickerTagMeta[]多选时可见的标签(受 maxTagCount 截断),与 value 同序;单选恒为空数组。
translationsColorPickerTranslations合上作者覆盖后的文案。
overflowCountnumber被 maxTagCount 折叠的标签数。
overflowTextstring+N 标签显示的文字(由 translations.overflowTag 计算);没有折叠的标签时为空串。
hueSliderColorSliderApi<T>色相颜色滑块的 api:部件属性与取值都从这里获取,DOM 带 data-scope="color-slider"。
alphaSliderColorSliderApi<T>透明度颜色滑块的 api。
swatchPickerColorSwatchPickerApi<T>预设色板的 api,DOM 带 data-scope="color-swatch-picker"。
recentSwatchPickerColorSwatchPickerApi<T>最近使用色那台色块选择器的 api。
inputText(channel: ColorPickerInputChannel) => string某个数值框当前应显示的文字(有草稿显示草稿,否则显示规范文本)。
setOpen(next: boolean) => void
setValue(next: string[]) => void改选中值:单选取首项改工作色、给空数组清回未选(不发 onClear),多选整份替换。
add() => void多选:把工作色收进值(与按「添加」同一条路)。
deselect(value: string) => void多选:摘掉一个选中值。
clearError() => void清除四路显式错误;屏幕取色重试也会先清除自己那一路。
clearRecentColors() => void清空最近使用色。
getRootProps() => T['element']
getLabelProps() => T['label']
getControlProps() => T['element']
getTagListProps() => T['element']标签行:多选时放在盒里、触发钮之前,收纳可见标签与 +N 标签;单选时整体 hidden。
getTagProps(props: ColorPickerTagProps) => T['element']标签:一个选中值一个,即库内 tag 的 root(data-scope="tag"),另带 data-value 与画色点用的颜色。
getTagLabelProps() => T['element']标签文字所在的块(tag 的 label);标签与 +N 共用。
getOverflowTagProps() => T['element']被折叠的标签合成的一个:同样是 tag 的 root,显示 overflowText、带 data-count;没有折叠的标签时 hidden。
getItemDeleteTriggerProps(props: ColorPickerTagProps) => T['button']标签删除按钮:即所在标签那份 tag 的 close-trigger,可及名使用 translations.deleteItem;不占 Tab 位、按下不夺焦。
getTriggerProps() => T['button']
getClearTriggerProps() => T['button']清空钮:触发钮的兄弟节点(按钮不能套按钮),单选有值时才显示,按下清回未选、不碰开合; 不占 Tab 位,可及名使用 translations.clearTrigger。多选与未选时 hidden。
getValueTextProps() => T['element']
getSwatchProps() => T['element']
getPositionerProps() => T['element']
getContentProps() => T['element']
getSaturationAreaProps() => T['element']
getAreaThumbProps() => T['element']
getHueSliderProps() => T['element']色相滑块的挂载点,同时充当该滑块的根节点:滑块 root 的状态标记同步写在它身上。
getAlphaSliderProps() => T['element']透明度滑块的挂载点,同上。
getChannelInputProps(props: ColorPickerInputProps) => T['input']
getEyeDropperTriggerProps() => T['button']
getSwatchPickerProps() => T['element']预设色板的挂载点,同时充当色板的根节点(role=radiogroup 与键盘处理都在它身上)。
getRecentSwatchPickerProps() => T['element']最近使用色的挂载点,同上;还没有最近使用色时收起。
getConfirmTriggerProps() => T['button']「添加」:多选时把工作色收进值,浮层不收;单选时 hidden。文字由作者写。
getHiddenInputProps(props?: ColorPickerHiddenInputProps) => T['input']表单影子:值随表单提交。提供 name 后才带 name,未提供时不参与提交。 多选时一个选中值一份同名输入:传 { value } 产出那一份,不传是首个选中值那一份。

无障碍 ​

键盘 ​

规格出处:W3C APG

按键生效条件行为
Backspacefocus in trigger, multiple, 有选中值, not disabled/readOnly摘掉最后一个选中值(标签行末尾那一枚)
ArrowRight / ArrowLeftfocus in area-thumb, not disabled/readOnly按 1 调饱和度;RTL 下左右对调,语义恒是"朝饱和走一格"
ArrowUp / ArrowDownfocus in area-thumb, not disabled/readOnly按 1 调明度,屏幕向上恒是变亮,与 dir 无关
Shift+ArrowRight / Shift+ArrowLeft / Shift+ArrowUp / Shift+ArrowDownfocus in area-thumb, not disabled/readOnly同上,但一步走 10
Home / Endfocus in area-thumb, not disabled/readOnly饱和度取 0 / 100(与 aria-valuenow 报的是同一条轴)
Enterfocus in channel-input收下框里的字;收不了就保留草稿并报告输入错误。一并拦住表单提交
Escapeopen(本层在层栈顶)收起浮层,焦点归还触发器;常驻形态不入层栈,不接管这个键
Enter / Spaceheld on eye-dropper-trigger, not disabled按住期间取色按钮投影 data-pressed,与指针 :active 同一副按压面;抬起或失焦撤下,屏幕取色一开(窗口随即失焦)或浮层收起时一并撤下

ARIA ​

以下属性由 connect 生成。

部件属性值
triggeraria-controlscontent 部件的 id
triggeraria-expanded'true' | 'false'
triggeraria-haspopup'dialog'
triggeraria-invalid'true' | 'false'
triggeraria-labelprops.ariaLabel
triggeraria-labelledbylabel 部件的 id value-text 部件的 id | trigger 部件的 id value-text 部件的 id | value-text 部件的 id
clear-triggeraria-labellabel.clearTrigger
swatcharia-hidden'true'
contentaria-hidden!open || undefined
contentaria-labelprops.ariaLabel
contentaria-labelledbylabel 部件的 id | undefined
contentaria-modalundefined | 'false'
contentrole'group' | 'dialog'
area-thumbaria-disabled'true' | 'false'
area-thumbaria-labellabel.area
area-thumbaria-valuemax'100'
area-thumbaria-valuemin'0'
area-thumbaria-valuenowString(Math.round(hsva.s))
area-thumbaria-valuetextlabel.areaValueText(Math.round(hsva.s), Math.round(hs…
area-thumbrole'slider'
channel-inputaria-invalid'true' | 'false'
channel-inputaria-labellabel.input(channel)
eye-dropper-triggeraria-labellabel.eyeDropperTrigger
hidden-inputaria-hidden'true'
  • 触发按钮是原生按钮,aria-haspopup="dialog",名称由标题与当前值串合成,未选时念占位提示;浮层是非模态 role="dialog"。
  • 清空钮不占 Tab 位(整个控件只占触发钮一个 Tab 位),可及名取 translations.clearTrigger;按下后焦点回到触发钮。
  • 多选标签上的删除钮不占 Tab 位,可及名取 translations.deleteItem;键盘从触发钮上按退格摘掉最后一个。色点只是辅助,标签文字就是值串,颜色不是唯一的信息通道。
  • 取色面的拇指是 role="slider":aria-valuenow 报告饱和度,明度写入 aria-valuetext。
  • 两条滑块的名称与带单位的播报文本取自 translations.channel / channelValueText,由内嵌滑块读出。
  • 色板是 role="radiogroup",每格 role="radio";整组名称取 translations.swatchGroup,每格读 translations.swatch(value);最近使用色同一套,整组名称取 translations.recentSwatchGroup。
  • 常驻形态的取色面是 role="group",由标题命名,不是对话框。
  • Escape 收起浮层并把焦点归还触发按钮。

样式参考 ​

皮肤 ​

@xihan-ui/styles/color-picker.css 按 [data-scope="color-picker"][data-part="root"] 部件选择器书写,发布产物以挂载类 .xh-scope-color-picker 代替其中的 data-scope(特异性相同),位于 xihan.components 层。覆盖样式使用 xihan.overrides,部件选择器照常可用。

forced-colors: active 下另有一套规则:颜色交给系统,边框与状态标记改用系统色关键字。

数据属性 ​

由 connect 生成;条件不成立时不输出无值属性。

部件属性值
rootdata-disabled''(条件成立时才出现)
rootdata-inline''(条件成立时才出现)
rootdata-invalid''(条件成立时才出现)
rootdata-readonly''(条件成立时才出现)
rootdata-required''(条件成立时才出现)
rootdata-sizeprops.size
rootdata-state'open' | 'closed'
labeldata-disabled''(条件成立时才出现)
labeldata-invalid''(条件成立时才出现)
labeldata-readonly''(条件成立时才出现)
labeldata-required''(条件成立时才出现)
labeldata-state'open' | 'closed'
controldata-disabled''(条件成立时才出现)
controldata-invalid''(条件成立时才出现)
controldata-readonly''(条件成立时才出现)
controldata-required''(条件成立时才出现)
controldata-state'open' | 'closed'
controldata-variantprops.variant
controldata-xh-action-owner''
controldata-xh-field-chrome''
controldata-xh-field-layout'multi-tag' | undefined
controldata-xh-field-sizeprops.size
tag-listdata-disabled''(条件成立时才出现)
tag-listdata-instant''(条件成立时才出现)
tag-listdata-xh-tag-list''
triggerdata-disabled''(条件成立时才出现)
triggerdata-invalid''(条件成立时才出现)
triggerdata-readonly''(条件成立时才出现)
triggerdata-required''(条件成立时才出现)
triggerdata-state'open' | 'closed'
clear-triggerdata-xh-action-control''
clear-triggerdata-xh-action-display'has-value'
clear-triggerdata-xh-action-has-value''(条件成立时才出现)
clear-triggerdata-xh-action-profile'field-inset'
clear-triggerdata-xh-action-sizeprops.size
clear-triggerdata-xh-action-variant'ghost'
value-textdata-disabled''(条件成立时才出现)
value-textdata-invalid''(条件成立时才出现)
value-textdata-placeholder''(条件成立时才出现)
value-textdata-readonly''(条件成立时才出现)
value-textdata-required''(条件成立时才出现)
value-textdata-state'open' | 'closed'
swatchdata-disabled''(条件成立时才出现)
swatchdata-empty''(条件成立时才出现)
swatchdata-invalid''(条件成立时才出现)
swatchdata-readonly''(条件成立时才出现)
swatchdata-required''(条件成立时才出现)
swatchdata-state'open' | 'closed'
swatchdata-valueundefined | context.get('value')
swatchdata-xh-swatch''
swatchdata-xh-swatch-sizeprops.size
positionerdata-hidden''(条件成立时才出现)
positionerdata-placement定位引擎算出的实际落位
positionerdata-positioned''(条件成立时才出现)
positionerdata-sizeprops.size
positionerdata-state'open' | 'closed'
contentdata-disabled''(条件成立时才出现)
contentdata-inline''(条件成立时才出现)
contentdata-instant''(条件成立时才出现)
contentdata-invalid''(条件成立时才出现)
contentdata-placementundefined | 定位引擎算出的实际落位
contentdata-readonly''(条件成立时才出现)
contentdata-required''(条件成立时才出现)
contentdata-state'open' | 'closed'
saturation-areadata-disabled''(条件成立时才出现)
saturation-areadata-dragging''(条件成立时才出现)
saturation-areadata-invalid''(条件成立时才出现)
saturation-areadata-readonly''(条件成立时才出现)
saturation-areadata-required''(条件成立时才出现)
saturation-areadata-state'open' | 'closed'
area-thumbdata-disabled''(条件成立时才出现)
area-thumbdata-dragging''(条件成立时才出现)
area-thumbdata-invalid''(条件成立时才出现)
area-thumbdata-readonly''(条件成立时才出现)
area-thumbdata-required''(条件成立时才出现)
area-thumbdata-state'open' | 'closed'
hue-sliderdata-channel'hue'
alpha-sliderdata-channel'alpha'
alpha-sliderdata-disabled''(条件成立时才出现)
channel-inputdata-channelchannel
channel-inputdata-disabled''(条件成立时才出现)
channel-inputdata-invalid''(条件成立时才出现)
channel-inputdata-readonly''(条件成立时才出现)
channel-inputdata-required''(条件成立时才出现)
channel-inputdata-state'open' | 'closed'
eye-dropper-triggerdata-disabled''(条件成立时才出现)
eye-dropper-triggerdata-invalid''(条件成立时才出现)
eye-dropper-triggerdata-pressed''(条件成立时才出现)
eye-dropper-triggerdata-readonly''(条件成立时才出现)
eye-dropper-triggerdata-required''(条件成立时才出现)
eye-dropper-triggerdata-state'picking' | 'open' | 'closed'
confirm-triggerdata-disabled''(条件成立时才出现)
confirm-triggerdata-xh-action-control''
confirm-triggerdata-xh-action-display'always'
confirm-triggerdata-xh-action-profile'text'
confirm-triggerdata-xh-action-size'sm'
confirm-triggerdata-xh-action-variant'solid'
confirm-triggerdata-xh-ink-surface''
overflow-tagdata-countString(overflowCount)
tagdata-valuev

CSS 变量 ​

本组件公开覆盖槽由独立皮肤的实际消费位生成;默认来源、作用部件和状态均与 CSS 同源。

变量部件CSS 属性状态默认来源说明
--xh-color-picker-action-bgclear-trigger
eye-dropper-trigger
--xh-ink-surface
background
background-color
default
xh-ink-surface
--xh-_action-variant-bg-rest
transparent
color-picker 的 clear-trigger、eye-dropper-trigger 部件 --xh-ink-surface、background、background-color 覆盖槽。
--xh-color-picker-action-bg-activeclear-trigger
eye-dropper-trigger
background
background-color
disabled
is(:active, [data-pressed])
loading
not(:disabled)
not([data-disabled])
not([data-loading])
pressed
state=picking
--xh-_action-variant-bg-pressed
--xh-bg-subtle-active
--xh-bg-subtle-hover
color-picker 的 clear-trigger、eye-dropper-trigger 部件 background、background-color 覆盖槽。
--xh-color-picker-action-bg-hoverclear-trigger
eye-dropper-trigger
background
background-color
disabled
hover
loading
not(:disabled)
not([data-disabled])
not([data-loading])
--xh-_action-variant-bg-hover
--xh-bg-subtle
color-picker 的 clear-trigger、eye-dropper-trigger 部件 background、background-color 覆盖槽。
--xh-color-picker-action-bordereye-dropper-triggerborderdefault--xh-border-controlcolor-picker 的 eye-dropper-trigger 部件 border 覆盖槽。
--xh-color-picker-action-border-activeeye-dropper-triggerborder-colorstate=picking--xh-bg-brandcolor-picker 的 eye-dropper-trigger 部件 border-color 覆盖槽。
--xh-color-picker-action-fgclear-trigger
eye-dropper-trigger
colordefault--xh-fg-field-clear
--xh-fg-muted
color-picker 的 clear-trigger、eye-dropper-trigger 部件 color 覆盖槽。
--xh-color-picker-action-fg-hoverclear-trigger
eye-dropper-trigger
colordisabled
hover
loading
not(:disabled)
not([data-disabled])
not([data-loading])
--xh-fg-defaultcolor-picker 的 clear-trigger、eye-dropper-trigger 部件 color 覆盖槽。
--xh-color-picker-action-font-sizeclear-trigger
eye-dropper-trigger
font-sizedefault--xh-text-secondary-sizecolor-picker 的 clear-trigger、eye-dropper-trigger 部件 font-size 覆盖槽。
--xh-color-picker-action-radiusclear-trigger
eye-dropper-trigger
border-radiusdefault--xh-shape-circle
--xh-shape-control
color-picker 的 clear-trigger、eye-dropper-trigger 部件 border-radius 覆盖槽。
--xh-color-picker-action-sizeclear-trigger
eye-dropper-trigger
block-size
inline-size
min-inline-size
default
xh-action-profile=field-inset
--xh-_action-profile-visual-size
--xh-control-action-size
color-picker 的 clear-trigger、eye-dropper-trigger 部件 block-size、inline-size、min-inline-size 覆盖槽。
--xh-color-picker-alpha-slider-gapalpha-slidergapdefault--xh-stack-gap-mdcolor-picker 的 alpha-slider 部件 gap 覆盖槽。
--xh-color-picker-confirm-trigger-bgconfirm-trigger--xh-ink-surface
background-color
default
xh-ink-surface
--xh-_action-variant-bg-restcolor-picker 的 confirm-trigger 部件 --xh-ink-surface、background-color 覆盖槽。
--xh-color-picker-confirm-trigger-bg-activeconfirm-triggerbackground-colordisabled
is(:active, [data-pressed])
loading
not([data-disabled])
not([data-loading])
pressed
--xh-_action-variant-bg-pressedcolor-picker 的 confirm-trigger 部件 background-color 覆盖槽。
--xh-color-picker-confirm-trigger-bg-hoverconfirm-triggerbackground-colordisabled
hover
loading
not([data-disabled])
not([data-loading])
--xh-_action-variant-bg-hovercolor-picker 的 confirm-trigger 部件 background-color 覆盖槽。
--xh-color-picker-confirm-trigger-fgconfirm-triggercolordefault
disabled
hover
is(:active, [data-pressed])
loading
not([data-disabled])
not([data-loading])
pressed
--xh-_action-variant-fg-hover
--xh-_action-variant-fg-pressed
--xh-_action-variant-fg-rest
color-picker 的 confirm-trigger 部件 color 覆盖槽。
--xh-color-picker-confirm-trigger-hconfirm-triggerblock-size
inline-size
default
xh-action-profile=field-inset
--xh-control-action-sizecolor-picker 的 confirm-trigger 部件 block-size、inline-size 覆盖槽。
--xh-color-picker-confirm-trigger-pxconfirm-triggerpadding-inlinedefault--xh-_action-profile-padding-inlinecolor-picker 的 confirm-trigger 部件 padding-inline 覆盖槽。
--xh-color-picker-confirm-trigger-radiusconfirm-triggerborder-radiusdefault--xh-shape-controlcolor-picker 的 confirm-trigger 部件 border-radius 覆盖槽。
--xh-color-picker-confirm-trigger-shadowconfirm-triggerbox-shadowdefault
disabled
hover
is(:active, [data-pressed])
loading
not([data-disabled])
not([data-loading])
pressed
nonecolor-picker 的 confirm-trigger 部件 box-shadow 覆盖槽。
--xh-color-picker-content-bgcontentbackgrounddefault--xh-bg-surfacecolor-picker 的 content 部件 background 覆盖槽。
--xh-color-picker-content-bordercontentborderdefault--xh-border-defaultcolor-picker 的 content 部件 border 覆盖槽。
--xh-color-picker-content-fgcontentcolordefault--xh-fg-defaultcolor-picker 的 content 部件 color 覆盖槽。
--xh-color-picker-content-gapcontentgapdefault--xh-space-3color-picker 的 content 部件 gap 覆盖槽。
--xh-color-picker-content-pxcontent
recent-swatch-picker
saturation-area
swatch-picker
margin-inline
padding-inline
default
first-child
is([data-part='swatch-picker'], [data-part='recent-swatch-picker'])
not(:is([data-part='swatch-picker'], [data-part='recent-swatch-picker'])
--xh-space-3color-picker 的 content、recent-swatch-picker、saturation-area、swatch-picker 部件 margin-inline、padding-inline 覆盖槽。
--xh-color-picker-content-pycontent
recent-swatch-picker
saturation-area
swatch-picker
margin-block-start
padding-block
padding-block-start
default
first-child
is([data-part='swatch-picker'], [data-part='recent-swatch-picker'])
not(:is([data-part='swatch-picker'], [data-part='recent-swatch-picker'])
--xh-space-3color-picker 的 content、recent-swatch-picker、saturation-area、swatch-picker 部件 margin-block-start、padding-block、padding-block-start 覆盖槽。
--xh-color-picker-content-radiuscontentborder-radiusdefault
inline
--xh-shape-overlay
--xh-shape-surface
color-picker 的 content 部件 border-radius 覆盖槽。
--xh-color-picker-content-shadowcontentbox-shadowdefault
inline
--xh-elevation-floating
none
color-picker 的 content 部件 box-shadow 覆盖槽。
--xh-color-picker-content-wcontentinline-sizedefault--xh-overlay-max-w-smcolor-picker 的 content 部件 inline-size 覆盖槽。
--xh-color-picker-control-bgcontrolbackground-colorxh-field-chrome--xh-_field-variant-bg-restcolor-picker 的 control 部件 background-color 覆盖槽。
--xh-color-picker-control-bg-disabledcontrolbackground-colordisabled
xh-field-chrome
--xh-_field-variant-bg-disabledcolor-picker 的 control 部件 background-color 覆盖槽。
--xh-color-picker-control-bg-hovercontrolbackground-colordisabled
hover
invalid
loading
not(:focus-within)
not([data-disabled])
not([data-invalid])
not([data-loading])
not([data-readonly])
readonly
xh-field-chrome
--xh-_field-variant-bg-hovercolor-picker 的 control 部件 background-color 覆盖槽。
--xh-color-picker-control-bg-readonlycontrolbackground-colorreadonly
xh-field-chrome
--xh-_field-variant-bg-read-onlycolor-picker 的 control 部件 background-color 覆盖槽。
--xh-color-picker-control-bordercontrolborderxh-field-chrome--xh-_field-variant-border-restcolor-picker 的 control 部件 border 覆盖槽。
--xh-color-picker-control-border-focuscontrolborder-color
box-shadow
disabled
focus-within
not([data-disabled])
xh-field-chrome
--xh-_field-variant-border-focuscolor-picker 的 control 部件 border-color、box-shadow 覆盖槽。
--xh-color-picker-control-border-hovercontrolborder-colordisabled
hover
invalid
loading
not(:focus-within)
not([data-disabled])
not([data-invalid])
not([data-loading])
not([data-readonly])
readonly
xh-field-chrome
--xh-_field-variant-border-hovercolor-picker 的 control 部件 border-color 覆盖槽。
--xh-color-picker-control-border-invalidcontrolborder-colorinvalid
xh-field-chrome
--xh-_field-variant-border-invalidcolor-picker 的 control 部件 border-color 覆盖槽。
--xh-color-picker-control-fgcontrolcolorxh-field-chrome--xh-fg-defaultcolor-picker 的 control 部件 color 覆盖槽。
--xh-color-picker-control-gapcontrolgapxh-field-chrome--xh-_color-picker-gapcolor-picker 的 control 部件 gap 覆盖槽。
--xh-color-picker-control-hcontrolblock-size
min-block-size
has([data-xh-field-input][data-xh-field-layout='multi-tag'])
has([data-xh-field-input][data-xh-field-layout='single-line'])
has([data-xh-field-input][data-xh-field-layout='textarea'])
xh-field-chrome
xh-field-input
xh-field-layout=multi-tag
xh-field-layout=single-line
xh-field-layout=textarea
--xh-_color-picker-hcolor-picker 的 control 部件 block-size、min-block-size 覆盖槽。
--xh-color-picker-control-max-hcontrolmax-block-sizexh-field-layout=multi-tag--xh-viewport-h-smcolor-picker 的 control 部件 max-block-size 覆盖槽。
--xh-color-picker-control-min-wcontrol
root
min-inline-sizedefault
xh-field-chrome
--xh-control-min-wcolor-picker 的 control、root 部件 min-inline-size 覆盖槽。
--xh-color-picker-control-pxcontrolpadding-inlinexh-field-chrome--xh-_color-picker-pxcolor-picker 的 control 部件 padding-inline 覆盖槽。
--xh-color-picker-control-radiuscontrolborder-radiusxh-field-chrome--xh-shape-controlcolor-picker 的 control 部件 border-radius 覆盖槽。
--xh-color-picker-control-shadowcontrolbox-shadowxh-field-chromenonecolor-picker 的 control 部件 box-shadow 覆盖槽。
--xh-color-picker-control-wrootinline-size
min-inline-size
default--xh-control-wcolor-picker 的 root 部件 inline-size、min-inline-size 覆盖槽。
--xh-color-picker-gaplabel
root
gap
margin-block-end
default--xh-space-1color-picker 的 label、root 部件 gap、margin-block-end 覆盖槽。
--xh-color-picker-hue-slider-gaphue-slidergapdefault--xh-stack-gap-mdcolor-picker 的 hue-slider 部件 gap 覆盖槽。
--xh-color-picker-icon-sizepositioner
root
--xh-icon-sizedefault
is([data-part='root'], [data-part='positioner'])
size=lg
size=sm
--xh-glyph-size-lg
--xh-glyph-size-md
--xh-glyph-size-sm
color-picker 的 positioner、root 部件 --xh-icon-size 覆盖槽。
--xh-color-picker-input-bgchannel-inputbackgrounddefault--xh-bg-fieldcolor-picker 的 channel-input 部件 background 覆盖槽。
--xh-color-picker-input-bg-disabledchannel-inputbackgrounddisabled--xh-bg-subtlecolor-picker 的 channel-input 部件 background 覆盖槽。
--xh-color-picker-input-bg-focuschannel-inputbackgroundfocus--xh-bg-surfacecolor-picker 的 channel-input 部件 background 覆盖槽。
--xh-color-picker-input-bg-readonlychannel-inputbackgroundreadonly--xh-bg-subtlecolor-picker 的 channel-input 部件 background 覆盖槽。
--xh-color-picker-input-borderchannel-inputborderdefault--xh-border-controlcolor-picker 的 channel-input 部件 border 覆盖槽。
--xh-color-picker-input-border-focuschannel-inputborder-color
box-shadow
focus--xh-border-control-focuscolor-picker 的 channel-input 部件 border-color、box-shadow 覆盖槽。
--xh-color-picker-input-border-hoverchannel-inputborder-colorhover
invalid
not(:disabled, :focus, [data-readonly], [data-invalid])
readonly
--xh-border-strongcolor-picker 的 channel-input 部件 border-color 覆盖槽。
--xh-color-picker-input-border-invalidchannel-inputborder-colorinvalid--xh-border-invalidcolor-picker 的 channel-input 部件 border-color 覆盖槽。
--xh-color-picker-input-font-sizechannel-inputfont-sizedefault--xh-text-caption-sizecolor-picker 的 channel-input 部件 font-size 覆盖槽。
--xh-color-picker-input-hchannel-inputblock-sizedefault--xh-control-action-sizecolor-picker 的 channel-input 部件 block-size 覆盖槽。
--xh-color-picker-input-pxchannel-inputpadding-inlinedefault--xh-control-px-smcolor-picker 的 channel-input 部件 padding-inline 覆盖槽。
--xh-color-picker-input-radiuschannel-inputborder-radiusdefault--xh-shape-controlcolor-picker 的 channel-input 部件 border-radius 覆盖槽。
--xh-color-picker-label-fglabelcolordefault--xh-fg-mutedcolor-picker 的 label 部件 color 覆盖槽。
--xh-color-picker-label-font-sizelabelfont-sizedefault--xh-text-label-sizecolor-picker 的 label 部件 font-size 覆盖槽。
--xh-color-picker-label-font-weightlabelfont-weightdefault--xh-text-label-weightcolor-picker 的 label 部件 font-weight 覆盖槽。
--xh-color-picker-label-gaplabelmargin-block-enddefault--xh-space-2color-picker 的 label 部件 margin-block-end 覆盖槽。
--xh-color-picker-layerpositionerz-indexdefault--xh-_layercolor-picker 的 positioner 部件 z-index 覆盖槽。
--xh-color-picker-max-hcontentmax-block-sizedefault--xh-viewport-h-lgcolor-picker 的 content 部件 max-block-size 覆盖槽。
--xh-color-picker-placeholder-fgvalue-textcolorplaceholder--xh-fg-subtlecolor-picker 的 value-text 部件 color 覆盖槽。
--xh-color-picker-saturation-area-hsaturation-areablock-sizedefault--xh-overlay-color-area-hcolor-picker 的 saturation-area 部件 block-size 覆盖槽。
--xh-color-picker-saturation-area-radiuscontent
saturation-area
border-radiusdefault
first-child
--xh-shape-control
0
color-picker 的 content、saturation-area 部件 border-radius 覆盖槽。
--xh-color-picker-separatorcontent
recent-swatch-picker
swatch-picker
border-block-startis([data-part='swatch-picker'], [data-part='recent-swatch-picker'])
not(:is([data-part='swatch-picker'], [data-part='recent-swatch-picker'])
--xh-material-solid-bordercolor-picker 的 content、recent-swatch-picker、swatch-picker 部件 border-block-start 覆盖槽。
--xh-color-picker-slider-thumb-bgalpha-slider
hue-slider
thumb
backgroundis([data-part='hue-slider'], [data-part='alpha-slider'])--xh-bg-surface-raisedcolor-picker 的 alpha-slider、hue-slider、thumb 部件 background 覆盖槽。
--xh-color-picker-slider-thumb-sizealpha-slider
hue-slider
--xh-_thumb-sizedefault--xh-control-indicator-mdcolor-picker 的 alpha-slider、hue-slider 部件 --xh-_thumb-size 覆盖槽。
--xh-color-picker-slider-track-thicknessalpha-slider
hue-slider
--xh-_track-thicknessdefault--xh-space-3color-picker 的 alpha-slider、hue-slider 部件 --xh-_track-thickness 覆盖槽。
--xh-color-picker-swatch-borderswatch--xh-swatch-borderdefault--xh-border-defaultcolor-picker 的 swatch 部件 --xh-swatch-border 覆盖槽。
--xh-color-picker-swatch-cellrecent-swatch-picker
swatch-picker
--xh-_color-swatch-picker-cell@media (pointer: coarse)
is([data-part='swatch-picker'], [data-part='recent-swatch-picker'])
--xh-control-h-sm
--xh-glyph-size-sm
color-picker 的 recent-swatch-picker、swatch-picker 部件 --xh-_color-swatch-picker-cell 覆盖槽。
--xh-color-picker-swatch-empty-strokeswatchbackground-imageempty--xh-border-controlcolor-picker 的 swatch 部件 background-image 覆盖槽。
--xh-color-picker-swatch-gaprecent-swatch-picker
swatch-picker
gapis([data-part='swatch-picker'], [data-part='recent-swatch-picker'])--xh-space-2color-picker 的 recent-swatch-picker、swatch-picker 部件 gap 覆盖槽。
--xh-color-picker-swatch-icon-sizerecent-swatch-picker
swatch-picker
--xh-icon-sizeis([data-part='swatch-picker'], [data-part='recent-swatch-picker'])--xh-_color-swatch-picker-markcolor-picker 的 recent-swatch-picker、swatch-picker 部件 --xh-icon-size 覆盖槽。
--xh-color-picker-swatch-picker-gaprecent-swatch-picker
swatch-picker
gapis([data-part='swatch-picker'], [data-part='recent-swatch-picker'])--xh-_color-swatch-picker-gapcolor-picker 的 recent-swatch-picker、swatch-picker 部件 gap 覆盖槽。
--xh-color-picker-swatch-radiusswatch--xh-swatch-radiusdefault--xh-shape-insetcolor-picker 的 swatch 部件 --xh-swatch-radius 覆盖槽。
--xh-color-picker-swatch-sizeswatch--xh-swatch-sizedefault--xh-_swatch-sizecolor-picker 的 swatch 部件 --xh-swatch-size 覆盖槽。
--xh-color-picker-tag-dot-borderroot
tag-list
bordervalue--xh-border-defaultcolor-picker 的 root、tag-list 部件 border 覆盖槽。
--xh-color-picker-tag-dot-sizeroot
tag-list
block-size
inline-size
value--xh-control-indicator-smcolor-picker 的 root、tag-list 部件 block-size、inline-size 覆盖槽。
--xh-color-picker-tag-list-gaptag-listgapxh-tag-list--xh-space-1color-picker 的 tag-list 部件 gap 覆盖槽。
--xh-color-picker-thumb-borderarea-thumbborderdefault--xh-color-neutral-0color-picker 的 area-thumb 部件 border 覆盖槽。
--xh-color-picker-thumb-edgearea-thumbbox-shadowdefault--xh-border-default-opaquecolor-picker 的 area-thumb 部件 box-shadow 覆盖槽。
--xh-color-picker-thumb-radiusarea-thumbborder-radiusdefault--xh-shape-circlecolor-picker 的 area-thumb 部件 border-radius 覆盖槽。
--xh-color-picker-thumb-sizearea-thumbblock-size
inline-size
margin-block-start
margin-inline-start
default--xh-control-indicator-mdcolor-picker 的 area-thumb 部件 block-size、inline-size、margin-block-start、margin-inline-start 覆盖槽。
--xh-color-picker-trigger-fgtriggercolordefault--xh-fg-defaultcolor-picker 的 trigger 部件 color 覆盖槽。
--xh-color-picker-trigger-font-sizetriggerfont-sizedefault--xh-text-body-sizecolor-picker 的 trigger 部件 font-size 覆盖槽。
--xh-color-picker-trigger-gaptriggergapdefault--xh-_color-picker-gapcolor-picker 的 trigger 部件 gap 覆盖槽。
--xh-color-picker-value-fgvalue-textcolordefault--xh-fg-defaultcolor-picker 的 value-text 部件 color 覆盖槽。
--xh-color-picker-value-font-sizevalue-textfont-sizedefault--xh-text-body-sizecolor-picker 的 value-text 部件 font-size 覆盖槽。

动效 ​

动效角色:按压 · 状态 · 指示与换位 · 出现 · 列表(见动效规范)。

共享关键帧 xh-fade-in · xh-fade-out · xh-overlay-pop-in · xh-pop-in · xh-pop-out 由 family/motion.css 提供,皮肤 @import 它,单独引入仍成立;background-color · border-color · color · scale · translate 走 transition 过渡。时长与缓动读动效令牌,改令牌即改全局节奏。

皮肤之外还有一段:退场由适配器的退场闸门把关,动画播完才真收起。

系统开启减弱动效时由令牌层统一收敛,皮肤不另作判断。

响应式 ​

皮肤另按输入能力分档:pointer: coarse:同一份皮肤在触屏与带指针的设备上不一样,与视口宽度无关。

  • 浮层的宽度与高度分别受可用空间约束,窄视口下面板不会超出屏幕,容纳不下时在面板内滚动。
  • 粗指针下命中区是取色面、滑块整条与色板整格。
  • 不写结构时按标准结构铺出整套部件(Vue 不写默认插槽、React 不给 children、Web Components 不写部件或只写 root),三端出自同一个结构函数:label 给标题文字,接着是盒(多选时先是标签行,再是带色块与值串的触发钮)、表单影子(给了 name 才有)与浮层;inline 时取色面直接铺在 root 里。取色面里依次是取色区、色相滑块、透明度滑块(开了 alpha 才有)、十六进制输入框、预设色板(给了 swatches 才有)、最近使用色,多选时末尾是「添加」,字取 translations.confirmTrigger。屏幕取色按钮要放图标,不在其中,要用时手写结构。Web Components 里标题可以写在宿主的直接子节点 slot="label" 上接管。

RTL ​

皮肤用逻辑属性排布(inline-start 一族),dir="rtl" 下自动镜像;另有按 dir 分支的规则。

  • dir="rtl" 只对调横轴(取色面的饱和度、两条滑块)上左右方向键与指针的语义,上下方向键始终是屏幕向上为增大。

Released under The MIT License