Color 颜色拾取器 (Component)

Color颜色拾取器组件是基于Color Library的模块,用来对任意节点应用颜色选取功能。

前言

原生的type=color组件是无法获取透明度通道的,所以UI框架基本上都会封装一个拾色器组件。本框架的拾色器组件具备原生拾色器组件的功能,同时具备更多特性:

  • 支持hsv和hsl两种色彩空间
  • 支持显示色彩空间的坐标名称
  • 支持从色彩空间中随机获取颜色
  • 支持以滑块修改色彩空间的色相
  • 支持以滑块修改输出值的透明度
  • 支持使用Number组件精确微调色值和透明度值
  • 支持hwb颜色模式
  • 支持多种面板布局结构
  • 支持自定义色值并长期缓存
  • 支持显示本框架的常用色

简单使用

使用ax-color标签即可表示一个拾色器组件。

本组件的宿主节点是一个ax-input组件,具备四种功能:

  1. 显示当前色值对应的色块,空值则显示透明
  2. 显示当前色值,可为空
  3. 复制当前色值
  4. 清空当前色值
  • 输出
  • HTML
  •                 
                    
                

设置初始值

默认初始值为空,可通过属性value设置初始值,支持以下颜色格式

  • rgb或rgba,例如rgb(0,0,0)或rgba(0,0,0,1)
  • hsl或hsla,例如hsl(0,0%,0%)或hsla(0,0%,0%,1)
  • hex或hexa,例如#000000或#000000ff
  • hwb或hwba,例如hwb(0,0%,0%)或hwba(0,0%,0%,1)

由于hwbhwba格式是CSS的新特性,浏览器支持有限,请谨慎使用。

  • 输出
  • HTML
  •                 
                    
                

可将value值填在标签内。

  • 输出
  • HTML
  • #e055ed
  •                 
                    
                

自动校正

默认是拾色器面板单向像宿主节点输出色值,如果需要面板每次打开的时候都自动检测宿主节点的色值,并自动更新面板上的色值,可设置属性detectable

  • 输出
  • HTML
  • JS
  •                 
                    
                
  •                 
                    let demo = document.querySelector("#demo0002"),
                        btn = document.querySelector("#demo0002btn");
                    btn.onclick = ()=>{
                        demo.setAttribute("value", "#ff0000");
                    }
                    
                

使用name

如果需要作为提交表单的一部分,那么可设置name属性,像其他表单域节点那样。

  • 输出
  • HTML
  •                 
                    
                

自动填充值

默认需要通过面板的“确认”按钮才可以对宿主节点进行赋值,如果需要在面板的每一次操作都能自动赋值,则可设置属性manual=false

自动填值模式下,会在初始化时将面板的默认色值(纯红色)进行填充,所以有必要通过参数value设置一个初始值。

  • 输出
  • HTML
  •                 
                    
                

输出值格式

默认填充的值格式为hsla格式,可通过属性format指定。支持rgbrgbahslhslahexhexahwbhwba格式。

  • 输出
  • HTML
  •                 
                    
                

多种面板

支持多种面板类型,可通过属性layout指定,支持以下几个值:

  • picker,仅显示颜色拾取器,默认
  • palette,仅显示预设面板
  • full,同时显示picker和palette面板
  • 输出
  • HTML
  •                 
                    
                

Attributes属性

属性名 语义类型 可选值 默认值 说明
disabled boolean - - 是否禁用
readonly boolean - - 是否只读
manual boolean - true 是否手动填值
full boolean - false 是否铺满父容器
detectable boolean - false 是否自动校正面板颜色
size string 'sm'/'md'/'lg' 'md' 尺寸类型
label string - - 标题文本
placeholder string - '' 占位文本
layout string 'picker'/'palette'/'full' 'picker' 面板布局类型
value string - '' 初始值
format string 'hsl'/'hsla'/'rgb'/'rgba'/'hex'/'hexa'/'hwb'/'hwba' 'hsla' 填值格式
color object - {} Color实例的参数

Methods方法

有组件通用的内置方法:

  • set:设置组件属性,支持一个参数即被设置的属性值键值对{key,value}或其数组
  • reset:重置组件属性,无参数
  • clear:清除属性和值,无参数

基本用法:CompElem.reset();

Events事件

有组件通用的事件:

  • connected:组件连接成功,无参数
  • disconnected:组件断开连接,无参数
  • adopted:组件被转移,无参数
  • set:设置了属性,支持一个参数即设置的值
  • cleared:清除了属性,无参数
  • reset:重置了属性,无参数

基本用法:CompElem.on('connected',()=>{console.log('connected')});