# ayin-color **Repository Path**: ayin86/ayin-color ## Basic Information - **Project Name**: ayin-color - **Description**: 为了免于记忆类似#FF000、RGB(255,0,0)、这样的颜色值,方便在开发中调用各种脑海中的颜色,所以开发了此工具库。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2023-02-24 - **Last Updated**: 2024-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: Less, chromajs, colorTable, 颜色表, 配色工具 ## README [English](./README.en.md) | 简体中文

数字魔方演示站数字魔方文档AyinColor NpmBili视频博客GithubGitee

AyinColor

AyinColor是一款颜色库工具,为了免于记忆类似#FF000、RGB(255,0,0)、这样的颜色值,方便在开发中调用各种预设的颜色,所以开发了此工具。
# 目录介绍 主要为以下3个目录: - **aYinColor-V1 source**-第一版的源码 - **aYinColor-V2 source**-第二版的源码 - **npm publish package**-发布到npm打包后的版本 如果只是使用的话,请阅读说明文档后,根据 【项目中使用】小节配置,如果需要二次迭代开发,请下载V1和V2的源码修改迭代。 **颜色表预览和视频教程,请到这里** - **[V1颜色表](https://doc.ayin86.com/component/b04--ayin-color#%E9%A2%9C%E8%89%B2%E8%A1%A8v1)** - **[V2颜色表](https://doc.ayin86.com/component/b04--ayin-color#%E9%A2%9C%E8%89%B2%E8%A1%A8v2)** - **[视频教程](https://www.bilibili.com/video/BV1kG411h7Px/)** Gitee无法识别html标签中的颜色值,所以无法在本页面展现颜色表。 # 简介 取色案例如下: - 红色-`rel5` - 淡红色-`rel1` - 深红色-`rel9` - 蓝色-`bll5` - 蓝色低饱和度-`bld5` - 淡蓝色低饱和度-`bld1` AyinColor 最早的版本于2018年10月份开发完毕V1版本。 AyinColor颜色库包含两个版本: - **JS版本-基于chroma.js库开发** - **CSS版本-基于Less.js开发** 其设计思路是,根据纯正红色的十六进制颜色值`#FF0000`,通过**改变色相、饱和度、明暗**来生成颜色表中的所有其他色值。 在第一个版本开发完毕之后,迭代过很多个版本,其本质仅仅是增加饱和度和明暗的变化数量。 但都没用起来,根本原因是V1版本颜色虽然较少,但也容易掌控,且在一般的项目开发中足够用了。 视频介绍请点击 [这里](https://www.bilibili.com/video/BV1kG411h7Px/?vd_source=4f3738cd3388bbbb606cea36d41d0899) 查看 ----- # 基础色 **基础色的选取,本质上是色相角度的调整。** **从0度开始,色相每偏转30度,生成一个基础色值,获得了12个基础颜色值** - **红**-hue=0 - **橙**-hue=30 - **黄**-hue=60 - **草绿**-hue=90 - **绿**-hue=120 - **水绿**-hue=150 - **青**-hue=180 - **蓝**-hue=210 - **靛**-hue=240 - **紫**-hue=270 - **粉**-hue=300 - **罗兰红**-hue=330 如果再次偏移30度,330+30=360度,实际上回到了0度的位置 这12个基础色值,色相差异太大,所以把色相偏转度改为15度,相当于上面的每个基础色值中间穿插了一个中间值,获得了24个基础色值。 24基础色,再额外加一个灰色,一共**25个基础色**诞生。 如下图: **25个基础色的中、英文名称、以及简写:** - **红**-red `re` - 红橙-red-orange `ro` - **橙**-orange `or` - 橙黄-orange-yellow `oy` - **黄**-yellow `ye` - 黄-草绿-yellow-chartreuse `yc` - **草绿**-chartreuse `ch` - 草绿-绿-chartreuse-green `cg` - **绿**-green `gr` - 绿-水绿-green-aquamarine `ga` - **水绿**-aquamarine `aq` - 水绿-青-aquamarine-cyan `ac` - **青**-cyan `cy` - 青蓝-cyan-blue `cb` - **蓝**-blue `bl` - 蓝靛-blue-indigo `bi` - **靛**-indigo `in` - 靛紫-indigo-purple `ip` - **紫**-purple `pu` - 紫粉-purple-pink `pp` - **粉**-pink `pi` - 粉-洋红-pink-violetred `pv` - **罗兰红**-violetred `vi` - 罗兰红-红-violetred-red `vr` - **灰**-gray `gy` 当时对12基础色进行中英文命名的时候,查阅了大量的资料和文献后定下来的,但哪怕现在也不确定这样命名是否准确,姑且这么用吧。 ----- # 饱和度变化 V1的饱和度分为4种 - light `l` - middle `m` - rost `r` - dark `d` 最早的AyinColor的饱和度分为三种,light、middle、dark,但感觉颜色在饱和度的变化太少了,所以才引入了一个rost(烤、烘烤、烤焦),此时V1版本正式定型。 如下图,**纵轴方向**的变化即为饱和度的变化 **V2版本**的饱和度变化分为**A、B、C、D、E、F**六种,因为找不到合适的单词表述这6种饱和度的变化,所以就用大写字母A-F直接替代了。 如下图,**纵轴方向**的变化即为饱和度的变化 ----- # 明暗的变化 **V1的明暗变化分为9种,用数字1-9代替** 如下图,**横轴方向**的变化即为明暗变化 **V2的明暗变化分为19种,用数字01-19代替** 如下图,**横轴方向**的变化即为明暗变化 中间也开发过其他的不同的版本,比如其中代号为AyinColorFull的饱和度变化分了10种,明暗分了19种,每种基础色变形出了190个颜色值,相邻颜色之间的差异非常小,在脑海中取色的时候因为饱和度和明暗的层级太多了,犹如一团浆糊,到后来也没用起来。 V2的开发,是因为后来在开发数据可视化框架的时候,在做配色工作时,感觉V1的饱和度、明暗变化太少了,需要更细腻的颜色表,所以才于2022年3月左右,基于之前开发的AyinColorFull,改造后重命名为V2,集成到框架中。 V2版本是基于AyinColorFull把饱和度从10种减少到6种后而来。 目前作者在开发项目的过程中,使用最多的还是V1版本,因为其变化较少,易于掌握,其颜色的变化在一般的项目开发中使用已经绰绰有余。只有在开发诸如大屏可视化框架遇到一些需要更细致颜色的时候,才会调用V2配色表。 ----- # 项目中使用 **AyinColorV1、V2的JS版本和CSS版均已开源**,可以随意在任意项目上使用和修改。 **npm地址如下 [AyinColor](https://www.npmjs.com/package/ayin-color?activeTab=readme)** 其内部文件列表如下: - ayin-color.less(V1 for CSS版本) - ayin-color-expand.less(V2 for CSS版本) - ayin-color.js(for JS版本) - ayin-color.json(JS版本的对应的静态颜色值) - index.js(入口文件) JS版本使用方式: ```js //npm安装,推荐cnpm或者pnpm npm i ayin-color --save //在main.js中引入 import {AyinColor} from "ayin-color" Vue.use(AyinColor) ``` CSS版本使用方式: ```js //vue2 在vue.config.js中配置 //需要在配置前先安装 less、less-loader、style-resources-loader pluginOptions: { 'style-resources-loader': { preProcessor: 'less', patterns: [ path.resolve(__dirname, "./node_modules/ayin-color/ayin-color.less"), path.resolve(__dirname, "./node_modules/ayin-color/ayin-color-expand.less") ] } }, //vue3+vite中使用 在 vite.config.js 中配置 //需要在配置前先安装 less、less-loader css: { preprocessorOptions: { less: { javascriptEnabled: true, additionalData:` @import "${path.resolve(__dirname, './node_modules/ayin-color/ayincolor.less')}"; @import "${path.resolve(__dirname, './node_modules/ayin-color/ayincolor-expand.less')}"; ` } } }, ``` ----- # JS代码中使用 当在项目中配置完毕后,即可全局使用AyinColorV1和V2的JS版本。 使用案例代码: ```js //AyinColor V1 let color=$c.rel5 //AyinColor V2 let color=$c.reA10 ``` ----- # CSS代码中使用 **因为CSS的颜色表基于Less开发,所以需要安装less组件。** 在此框架中已经集成了AyinColorV1和V2的Less版本,可以直接使用。 使用案例代码: ```less //AyinColor V1 .text{color:@rel5; background-color:@bll5; border:1px solid @gyd4;} //AyinColor V2 .text{color:@reA10; background-color:@blA03; border:1px solid @gyE05;} ``` 后续可能会开发一套原生CSS的颜色组件,比如把颜色值挂载到CSS的 `:root` 下通过 `var(--color-rel5)`这样的方式取调用。挖个坑等有时间再开发。 ----- # 颜色值的进阶处理 如果需要把bll5,改为0.5的透明度 JS代码 ```js let color=$c.fade('bll5',.5) ``` Less代码 ```less .text{color:fade(@bll5,50%);} ``` **JS中提供了以下进阶处理函数:** - **fade**-透明度 - **hslh**-色相 - **hsls**-饱和度 - **hsll**-明暗 - **darken**-加深 - **lighten**-减淡 - 以上的处理函数,使用方式均为 `$c.xxxx(color,num)`参考上方的JS代码案例。 - 以上函数是用chroma.js中的颜色处理函数封装而来。 - 其中num值的传入有些许的不同,比如透明度是浮点数,色相是度数,具体使用方式和传参,请参考chroma.js中的相关章节。 - **scale**-计算多个颜色之间的区间值 - scale的使用方式为,`$c.scale([color1,color2,.....colorN],num,type)` - 传入的颜色数组最少2个,无上限 - num是需要获取的颜色数量 - type是处理方式,非必填,默认值为 `lch` 备选值为 `lch`、`hsl`、`lab`、`lrgb` **Less中提供了以下的处理函数:** - **fade** 透明 - **fadein** 增加透明度 - **fadeout** 降低透明度 - **lighten** 明度 - **darken** 变暗 - **spin** 色相 - **saturate** 饱和度+ - **desaturate** 饱和度- - **tint** 与白色混合减少颜色比例 - **shade** 与黑色混合减少颜色比例 - **greyscale** 丢失饱和度 - **contrast** 对比度 - **mix** 混合两种颜色 常用的无非也就是fade、lighten、darken 等,其余的使用方式和详细介绍,请参考LESS文档中的颜色操作一节 ----- # 颜色转换工具 在使用AyinColor做开发的过程中,经常需要把普通的16进制颜色或者RGBA颜色转换为AyinColor中的颜色,因此开发了一个颜色转换工具。 此工具,可以输入任意颜色值,如,red,#FF0000,rgb(5,245,230) 返回AyinColor两个版本中的匹配结果,返回结果中的**距离**参数越小,则说明与原始颜色越接近。 **此工具位于aYinColor-V2 source目录中。**