使用高级 Chakra UI 组件,更快地进行构建 💎

了解更多
跳到内容
文档操场指南博客
赞助商

颜色选择器

用于从颜色区域或一组预定义色板中选择颜色

源码Storybook配方Ark

用法

import { ColorPicker } from "@chakra-ui/react"
<ColorPicker.Root>
  <ColorPicker.HiddenInput />
  <ColorPicker.Label />
  <ColorPicker.Control>
    <ColorPicker.Input />
    <ColorPicker.Trigger />
  </ColorPicker.Control>
  <ColorPicker.Positioner>
    <ColorPicker.Content>
      <ColorPicker.Area />
      <ColorPicker.EyeDropper />
      <ColorPicker.Sliders />
      <ColorPicker.SwatchGroup>
        <ColorPicker.SwatchTrigger>
          <ColorPicker.Swatch />
        </ColorPicker.SwatchTrigger>
      </ColorPicker.SwatchGroup>
    </ColorPicker.Content>
  </ColorPicker.Positioner>
</ColorPicker.Root>

快捷方式

ColorPicker.ChannelSlider

此组件渲染滑块轨道、滑块和透明度网格。

<ColorPicker.ChannelSlider />

<ColorPicker.ChannelSlider>
  <ColorPickerTransparencyGrid />
  <ColorPickerChannelSliderTrack />
  <ColorPickerChannelSliderThumb />
</ColorPicker.ChannelSlider>

ColorPicker.Sliders

这是色调和透明度滑块的快捷组件

<Stack>
  <ColorPickerChannelSlider channel="hue" />
  <ColorPickerChannelSlider channel="alpha" />
</Stack>

ColorPicker.Area

此组件渲染颜色区域滑块和背景。

<ColorPicker.Area>
  <ColorPicker.AreaThumb />
  <ColorPicker.AreaBackground />
</ColorPicker.Area>

<ColorPicker.Area />

ColorPicker.EyeDropper

这是...的快捷组件

<ColorPicker.EyeDropperTrigger asChild>
  <IconButton>
    <LuPipette />
  </IconButton>
</ColorPicker.EyeDropperTrigger>

示例

尺寸

使用 size 属性来改变颜色选择器的尺寸。

变体

使用 variant 属性来改变颜色选择器的视觉样式。可选值有 outlinesubtle

仅输入框

ColorPicker.ValueSwatchColorPicker.EyeDropper 结合到 InputGroup 上,以渲染一个仅包含输入框的颜色选择器。

仅色板

使用 ColorPicker.SwatchGroupColorPicker.SwatchTrigger 来仅渲染颜色色板。

仅触发器

使用 ColorPicker.ValueSwatchColorPicker.ValueText 组合颜色选择器,使其最初只显示一个触发器。

输入框内触发

使用 InputGroupColorPickerInput 组合颜色选择器,使其在输入框中触发。

受控

使用 valueonValueChange 属性来控制颜色选择器的状态。

状态存储

控制颜色选择器的另一种方法是使用 RootProvider 组件和 useColorPicker 状态存储 Hook。

通过这种方式,您可以从颜色选择器外部访问其状态和方法。

更改结束

使用 onValueChangeEnd 来监听用户何时完成颜色选择,而不是在他们拖动或擦过颜色区域时。

onChangeEnd: #EB5E41

通道滑块

结合 ColorPickerChannelSlidersformat 属性,将不同的颜色通道添加到颜色选择器。

Hook 表单

这是一个如何将颜色选择器与 react-hook-form 集成的示例。

内联

这是一个如何显示颜色选择器内联版本的示例。

禁用

传递 disabled 属性来禁用颜色选择器。

通道输入

使用 ChannelFormat.SelectColorPicker.ChannelInput 创建一个允许用户选择首选通道的颜色选择器。

适应内容

data-fit-content 属性传递给 ColorPicker.Trigger,使其适应内容。

只读

使用 readOnly 属性使颜色选择器组件只读。

保存色板

这是一个如何将选定的颜色保存为色板的示例。

色板

这是一个如何将颜色选择器与预定义色板结合使用的示例。

色板与输入框

这是如何将色板与输入框组合起来的示例。

色板与触发器

这是如何将色板与触发器组合起来的示例。

属性

属性默认值类型
closeOnSelect false
boolean

选择色板时是否关闭颜色选择器

format '\'rgba\''
ColorFormat

要使用的颜色格式

lazyMount false
boolean

是否启用懒加载

openAutoFocus true
boolean

打开时是否自动聚焦颜色选择器

unmountOnExit false
boolean

退出时是否卸载。

value '#000000'
颜色

当前颜色值

colorPalette 'gray'
'gray' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'blue' | 'cyan' | 'purple' | 'pink'

组件的调色板

size 'md'
'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'

组件的尺寸

variant 'outline'
'outline' | 'subtle'

组件的变体

asChild
boolean

使用提供的子元素作为默认渲染元素,结合它们的属性和行为。

有关更多详细信息,请阅读我们的 组合 指南。
defaultOpen
boolean

颜色选择器首次渲染时的初始打开状态。在您不需要控制其打开状态时使用。

defaultValue
颜色

颜色选择器首次渲染时的初始值。在您不需要控制颜色选择器状态时使用。

disabled
boolean

颜色选择器是否禁用

id
string

机器的唯一标识符。

ids
Partial<{ root: string; control: string; trigger: string; label: string; input: string; hiddenInput: string; content: string; area: string; areaGradient: string; positioner: string; formatSelect: string; areaThumb: string; channelInput(id: string): string; channelSliderTrack(id: ColorChannel): string; channelSliderT...

颜色选择器中元素的 ID。适用于组合。

immediate
boolean

是立即同步当前更改还是推迟到下一帧

initialFocusEl
() => HTMLElement | null

颜色选择器打开时的初始聚焦元素。

invalid
boolean

颜色选择器是否无效

name
string

表单输入的名称

onExitComplete
() => void

动画在关闭状态结束时调用的函数

onFocusOutside
(event: FocusOutsideEvent) => void

焦点移出组件时调用的函数

onFormatChange
(details: FormatChangeDetails) => void

颜色格式更改时调用的函数

onInteractOutside
(event: InteractOutsideEvent) => void

组件外部发生交互时调用的函数

onOpenChange
(details: OpenChangeDetails) => void

用户打开或关闭颜色选择器时调用的处理程序。

onPointerDownOutside
(event: PointerDownOutsideEvent) => void

指针在组件外部按下时调用的函数

onValueChange
(details: ValueChangeDetails) => void

当用户拖动时,值发生变化时调用的处理程序。

onValueChangeEnd
(details: ValueChangeDetails) => void

当用户停止拖动时调用的处理程序。

open
boolean

颜色选择器是否打开

positioning
PositioningOptions

颜色选择器的定位选项

present
boolean

节点是否存在(由用户控制)

readOnly
boolean

颜色选择器是否只读

required
boolean

颜色选择器是否为必填

上一个

Combobox

下一个

Color Swatch