Skip to page content

颜色选择器

QColor 组件提供了一种输入颜色的方式。

TIP

如需处理颜色相关的操作,还可以参考 Quasar 颜色工具库。

用法

基础用法

配合 QInput 使用

QInput 的 rules 属性有一些现成的辅助校验规则可用:完整列表。你可以直接使用这些规则,也可以编写字符串来指定你的自定义需求。

示例:“hexColor”、“rgbOrRgbaColor”、“anyColor”。

更多信息请参阅:QInput。

隐藏头部或底部

你可以选择不渲染头部和/或底部,如下面的示例所示:

自定义默认视图

你还可以设置默认显示的视图,如下面的示例所示——我们同时指定了不渲染头部和底部,最终呈现出一个简洁的调色板供用户选择:

自定义调色板

palette 插槽
v2.31+

palette 插槽会替换调色板视图的默认色块,同时保留光谱(Spectrum)视图、Tune 视图以及视图切换器。它的作用域携带了颜色(palette)、一个 select(color) 函数和一个 editable 标志,因此布局和标签都由你决定。默认色块是键盘和屏幕阅读器可访问的(见下文无障碍章节);请让你的色块也保持这一点。

强制暗色模式

默认值

延迟更新

禁用和只读

原生表单提交

当使用带有 action 和 method 的原生表单时(例如在 Quasar 配合 ASP.NET 控制器使用的场景),你需要为 QColor 指定 name 属性,否则 formData 中将不会包含它的值(如果需要的话):

无障碍访问
v2.25+

QColor 的三个视图都是键盘和屏幕阅读器可访问的:Tune 视图通过其原生文本/数字输入框加滑块,以及自 v2.31 起,光谱(Spectrum)视图通过其光谱面板、调色板视图通过其色块。

光谱面板是一个滑块(role="slider"),由本地化的 colorPicker.spectrum 标签命名;由于它同时驱动两个坐标轴,其无障碍值会把两者都读出来(colorPicker.saturation 和 colorPicker.brightness,例如"饱和度 40%,亮度 70%")。它是一个 Tab 停靠点:左/右 改变饱和度,上/下 改变亮度,每次 1%(配合 Shift 为 10%),Home/End 跳到饱和度的 0/满值,PageUp/PageDown 按 10% 改变亮度。与旁边的滑块一样,面板会在按键释放后发出一次 change。

调色板色块是以其颜色值命名的按钮,包裹在一个携带本地化 colorPicker.palette 标签的组中,与当前 model 匹配的色块会被暴露为已按下状态。调色板只有一个 Tab 停靠点(选中的色块,否则是第一个);方向键在色块间移动(上/下 按视觉行移动),Home/End 跳到第一个/最后一个色块,Enter/Space 选中获得焦点的那个。通过 palette 插槽渲染的色块,其无障碍性由你自己负责。

已暴露的部分带有来自 Quasar 语言包(colorPicker.*)的本地化无障碍名称:视图标签页、头部的颜色值输入框以及色相/不透明度滑块,这些都无法从外部命名。

disable 状态的 QColor 会在根元素上暴露 aria-disabled="true"。readonly 或 disable 的选择器还会像它的滑块那样,把光谱面板和色块移出 Tab 序列,同时光谱面板仍会以 aria-readonly/aria-disabled 报告当前颜色。