尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

FAST ColorScale.getColor() 全解析:用 fast-colors 色阶在任意位置精确取样插值颜色

发布时间:2026/9/25 2:59:24

资讯中心
01
ARTICLE

FAST ColorScale.getColor() 全解析:用 fast-colors 色阶在任意位置精确取样插值颜色

FAST ColorScale.getColor() 全解析:用 fast-colors 色阶在任意位置精确取样插值颜色
前端UI组件【免费下载链接】fastThe adaptive interface system for modern web experiences.项目地址https://gitcode.com/gh_mirrors/fa/fast点击查看免费下载ColorScale.getColor(position, interpolationMode)是微软 FAST 设计体系中microsoft/fast-colors包内ColorScale类的核心取样方法它负责在由一组线性色标stops构成的颜色渐变上根据归一化位置精确取出对应的插值颜色。本文将以 fast-colors 模块文档 及其关联的ColorScaleAPI 文档为主体完整讲解getColor()的签名、参数语义、返回值类型并结合ColorScaleStop、ColorInterpolationSpace枚举与ColorScale的构造、裁剪、对比度搜索等相关方法给出可直接运行的 TypeScript 实战示例帮助你在设计系统 Token、数据可视化色阶与无障碍对比度场景中用好这套颜色工具链。fast-colors 与 ColorScale 的定位microsoft/fast-colors是 FAST 生态中的颜色数学工具库。从 fast-colors 模块文档 可以看到它围绕多个色彩空间类ColorHSL、ColorHSV、ColorLAB、ColorLCH、ColorXYZ、ColorRGBA64与一批纯函数如parseColorHexRGB、rgbToHSL、contrastRatio、interpolateRGB等构建用于颜色的解析、转换、混合与插值。ColorScale类在文档中被定义为 “A color scale created from linear stops”由线性色标创建的颜色标尺是上述能力在“连续渐变取样”场景中的高层封装。它支持通过构造函数接收一组ColorScaleStop色标用getColor()在任意归一化位置取样用findNextColor()按对比度约束反向搜索相邻颜色用trim()裁剪出子区间用clone()复制实例用静态方法createBalancedColorScale()从一组颜色自动生成“均衡”色阶。getColor() 方法签名根据 ColorScale.getColor 文档方法签名如下getColor(position: number, interpolationMode?: ColorInterpolationSpace): ColorRGBA64;参数position类型为number表示取样位置。参数interpolationMode类型为ColorInterpolationSpace枚举可选带?标记。返回值ColorRGBA64即一个 RGBA 各通道为 64 位精度的颜色对象。position 参数的语义ColorScale由一组线性色标构成每个色标通过position与color两个属性定义其在标尺上的位置与颜色见 ColorScaleStop 接口文档。结合“线性色标”“归一化标尺”的设计可以推断position通常取值为[0, 1]区间内的归一化数值——0对应标尺起点第一个色标1对应标尺终点最后一个色标。取值落在两个相邻色标之间时getColor()会依据指定的插值空间对左右色标颜色做插值计算这也与模块文档中lerp(i, min, max)线性插值、normalize(i, min, max)归一化等工具函数的能力对应。interpolationMode 可选参数与插值空间interpolationMode控制颜色插值在哪个色彩空间中进行。其类型为 ColorInterpolationSpace 枚举枚举成员及取值如下枚举成员数值含义RGB0在 RGB 色彩空间插值HSL1在 HSL色相/饱和度/明度空间插值HSV2在 HSV色相/饱和度/明度面向色相环空间插值XYZ3在 XYZCIE 1931空间插值LAB4在 CIELAB 感知均匀空间插值LCH5在 CIELCHLAB 的圆柱坐标表示空间插值文档签名中该参数为可选未显式传入时由实现按默认空间处理从枚举定义看RGB是第一个成员数值 0。不同空间的插值结果差异显著RGB 插值最直观但中间色可能显得“发灰”而 HSL/LCH 等空间在色相过渡时更平滑LAB/LCH 则更贴近人眼感知。这与模块文档中并列暴露的interpolateRGB、interpolateHSL、interpolateHSV、interpolateXYZ、interpolateLAB、interpolateLCH、interpolateByColorSpace等函数一一对应可以视为getColor()底层按空间分发到对应插值实现的依据。返回值 ColorRGBA64方法返回 ColorRGBA64 ——一个 RGBA 各通道使用 64 位精度的颜色对象这是 fast-colors 各 API 之间交换颜色的统一载体。拿到返回值后可配合模块文档中的工具函数继续处理例如用parseColorHexRGB解析输入、或把取样结果转为十六进制字符串用于 CSS 输出模块中提供getHexStringForByte等辅助函数。构造一个 ColorScale在使用getColor()之前需要先构造ColorScale实例。构造函数签名见 ColorScale 构造函数文档constructor(stops: ColorScaleStop[]);其中ColorScaleStop接口包含两个属性见 ColorScaleStop 接口属性类型说明colorColorRGBA64该色标的颜色positionnumber该色标在标尺上的位置完整实战示例结合上述文档签名可以写出如下可运行的 TypeScript 示例用parseColorHexRGB解析十六进制颜色构造一条从暗蓝到青再到白的渐变色阶然后在多个位置取样import { ColorScale, ColorRGBA64, ColorInterpolationSpace, parseColorHexRGB, } from microsoft/fast-colors; // 1. 定义色标颜色 归一化位置 const stops [ { color: parseColorHexRGB(#0B3B60)!, position: 0 }, { color: parseColorHexRGB(#13B5EA)!, position: 0.5 }, { color: parseColorHexRGB(#FFFFFF)!, position: 1 }, ]; // 2. 构造线性色阶 const scale new ColorScale(stops); // 3. 在任意位置取样默认空间 const c1: ColorRGBA64 scale.getColor(0); // 起点颜色 const c2: ColorRGBA64 scale.getColor(0.25); // 第一段 1/4 处 const c3: ColorRGBA64 scale.getColor(1); // 终点颜色 // 4. 指定插值空间取样LCH 感知更均匀 const c4: ColorRGBA64 scale.getColor(0.5, ColorInterpolationSpace.LCH); // 5. 将取样结果输出为 CSS 可用的十六进制色值 function toHex(color: ColorRGBA64): string { const r Math.round(color.r * 255).toString(16).padStart(2, 0); const g Math.round(color.g * 255).toString(16).padStart(2, 0); const b Math.round(color.b * 255).toString(16).padStart(2, 0); return #${r}${g}${b}; } console.log(toHex(c1), toHex(c2), toHex(c3), toHex(c4));注意parseColorHexRGB期望#RRGGBB格式模块文档中另有parseColorHexRGBA支持带 alpha 的#RRGGBBAA。由于ColorRGBA64的通道为 0–1 范围的归一化数值输出十六进制时需自行换算。围绕 getColor 的配套能力ColorScale类在 类文档 中共暴露五个方法与一个构造函数getColor()是其中负责“取值”的成员其他成员与它配合可以构建更完整的取色流程findNextColor()按对比度反向搜索签名见 findNextColor 文档findNextColor( position: number, contrast: number, searchDown?: boolean, interpolationMode?: ColorInterpolationSpace, contrastErrorMargin?: number, maxSearchIterations?: number ): number;它接受一个起始位置与目标对比度contrast可选地指定搜索方向searchDown、插值空间、对比度容差contrastErrorMargin与最大迭代次数maxSearchIterations返回满足对比度要求的下一个位置数值——你通常需要把它作为getColor()的输入再次取样从而得到“与当前位置颜色对比度达标”的颜色。这一组合是设计系统 Token例如保证文字与背景的 WCAG 对比度的常用模式模块文档中也提供了contrastRatio(a, b)按 WCAG 2.0 公式计算对比度作为底层支撑。trim()裁剪子区间签名见 trim 文档trim(lowerBound: number, upperBound: number, interpolationMode?: ColorInterpolationSpace): ColorScale;从原色阶中截取[lowerBound, upperBound]区间返回一个新的ColorScale。裁剪后继续调用getColor()即可把取样范围限定在子区间内——例如从整条明暗色阶中只取中间 40% 作为实际可用的主题色带。clone() 与 createBalancedColorScale()clone() 返回当前实例的副本适合在“基于同一色阶做多分支实验”时避免相互影响静态方法 createBalancedColorScale(colors) 接收ColorRGBA64[]并返回一个自动生成色标的ColorScale省去手动计算每个色标position的步骤可以直接把一组品牌色交给它生成连续渐变。典型应用场景与注意事项从模块文档的功能面可以推断getColor()在 FAST 设计体系中的典型用途设计系统色板 Token把品牌主色、辅助色定义为色标通过getColor()在归一化位置上派生浅色/深色变体避免手写大量魔法色值数据可视化连续色阶将数值区间映射到[0, 1]用getColor(position)为热力图、等级图逐级取色无障碍对比度配对与findNextColor()配合在色阶上搜索满足 WCAG 对比度的相邻色再以getColor()落地取值感知均匀插值涉及色相环过渡或人眼敏感的场景优先传入LAB/LCH枚举值以获得更均匀的渐变而不是默认的 RGB 空间。使用注意事项position应保持归一化范围多个色标按位置升序排列才能获得可预期的插值行为这是“线性色标”数据结构的固有前提不同插值空间结果差异明显跨空间对比取样结果时需在相同interpolationMode下进行。小结ColorScale.getColor(position, interpolationMode?)是 FAST fast-colors 颜色体系中“色阶取样”的关键入口构造一组ColorScaleStop色标传入归一化位置即可获得高精度ColorRGBA64插值颜色并通过ColorInterpolationSpace枚举在 RGB、HSL、HSV、XYZ、LAB、LCH 六个色彩空间之间切换插值策略。搭配trim()、findNextColor()、clone()与静态工厂createBalancedColorScale()它构成了一套完整的“定义渐变 → 取样 → 裁剪/搜索 → 落地输出”颜色工作流可直接服务于设计系统 Token 生成与可访问性对比度计算等场景。更多细节可查阅 fast-colors 模块 API 总览 与 ColorScale 类文档。赞分享前端UI组件【免费下载链接】fastThe adaptive interface system for modern web experiences.项目地址https://gitcode.com/gh_mirrors/fa/fast点击查看免费下载相关推荐FAST Colors 颜色空间插值深入解析 interpolateByColorSpace() 函数FAST Colors 颜色空间插值深入解析 interpolateByColorSpace 函数 interpolateByColorSpace 是 mi前端UI组件FAST 颜色插值实战指南深入理解 microsoft/fast-colors 的 interpolateHSV 函数FAST 颜色插值实战指南深入理解 microsoft/fast colors 的 interpolateHSV 函数 导读 interpolateHSV前端UI组件FAST 颜色量化核心深入解析 microsoft/fast-colors 的 PixelBox.averageColor 代表色FAST 颜色量化核心深入解析 microsoft/fast colors 的 PixelBox.averageColor 代表色 PixelBox.ave前端UI组件上一篇deit3_base_patch16_224.fb_in22k_ft_in1k实战教程用PyTorch轻松实现Top-5图像分类预测 下一篇提升ONNX模型部署效率ONNX Optimizer关键优化技术深度剖析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。