
编程语言编译器语言运行时【免费下载链接】imba The friendly full-stack language项目地址https://gitcode.com/gh_mirrors/im/imba点击查看免费下载Imba 的样式系统将 CSS 颜色数据类型sRGB 色彩空间完整接入语法层面你既可以用与原生 CSS 完全一致的方式书写#7A4ACF、hsl(...)、rgba(...)也可以直接使用内置的 Tailwind 风格命名色板如blue3、indigo5并叠加透明度、插值与状态变体。本文以官方文档 colors.md 为主线结合编译器的色板构建与解析源码带你彻底掌握 Imba 中颜色的定义、使用与底层原理。一、颜色在 Imba 样式体系中的定位CSS 中的color数据类型表示 sRGB 色彩空间中的一个颜色。Imba 的样式语法完整继承了这一语义——凡是预期颜色值的位置bg、color、border-color、box-shadow、outline等属性都可以书写颜色表达式。与普通 CSS 相比Imba 的差异在于两点书写位置更集中颜色写在样式声明块内如css .demo bg:#7A4ACF且支持类型安全的属性提示内置命名色板Imba 内建了由 Tailwind 团队精心打磨的命名色板无需任何配置即可直接使用。官方文档提供了一个可直接运行的交互式演示colors.imba 示例展示了 hex、hsl、rgba 与命名色的混用效果。二、Tailwind 风格命名色板从 color0 到 color9Imba 内建了对命名色的支持这些色板源自 Tailwind CSS 的经典配色方案。每个色系color family都包含 10 个不同色阶shade依次命名为color0到color9其中color0是最浅色、color9是最深色css .demo-1 bg:blue3 # 蓝色系第 3 档 css .demo-2 bg:indigo5 # 靛蓝色系第 5 档 css .demo-3 bg:gray3 # 灰色系第 3 档在 imba.io 官方文档页中doc-colors组件会渲染一张完整的交互式色板鼠标悬停即可查看每个色块对应的名称如sky3、rose5是查阅色板最直观的方式。源码中的色板定义命名色板并非魔法而是定义在编译器的主题文件中theme.mjs。export const colors以「色系 → 10 档十六进制色值」的结构组织export const colors { rose: { 0: #fff1f2, 1: #ffe4e6, // ... 5: #f43f5e, // ... 9: #881337 }, blue: { 0: #eff6ff, 1: #dbeafe, // ... 5: #3b82f6, // ... 9: #1e3a8a }, // ... };当前仓库中内建的色系包括rose、pink、fuchsia、purple、violet、indigo、blue、sky、cyan、teal、emerald、green、lime、yellow、amber、orange、red以及灰阶系列warmer、warm、gray、cool、cooler每个色系均提供 10 档色阶。除了 Tailwind 风格色板theme.mjs 还定义了named_colors——即完整的 CSS 关键字色名aliceblue、rebeccapurple、whitesmoke等保证「与原生 CSS 完全一致」的书写体验。三、任何期望颜色值的位置都可以使用命名色不是仅在特定属性可用的「特例」它们与普通 CSS 颜色完全等价。文档明确指出命名色可以出现在任何期望颜色值的地方。例如以下原生写法在 Imba 中照常工作css .demo-hex bg:#7A4ACF css .demo-hsl bg:hsl(120,90%,45%) css .demo-rgba bg:rgba(120,255,176)而同样的位置也都可以替换为命名色css .demo-1 bg:blue3 css .demo-2 bg:indigo5从类型层面看styles.generated.d.ts 中定义了独立的Ψcolor类型color、background-color、border-color、outline-color等属性的set(val: Ψcolor)签名都统一接收该类型——这意味着编辑器可以对颜色值做一致的补全与校验。四、进阶用法透明度、插值与状态变体官方示例 colors.imba 中还展示了几个高频实战技巧1. 直接携带透明度在命名色后追加/加百分比即可指定透明度css .demo-2 bg:indigo5/80% # 80% 不透明度的 indigo52. 与插值表达式结合颜色值可以是动态的插值表达式适合与响应式状态联动const item {tint: sky3} css .demo-interpolation bg:{item.tint} # 动态取色等价于 bg:sky3这种能力在测试中也得到了验证interpolation.imba 中大量使用了bg:gray3、bg:blue3、bg:teal3等命名色与动态数值混写的样式。3. hover 等状态变体命名色可以配合 Imba 的样式修饰符实现状态切换css .demo-1 bg:blue3 hover:blue5 # 悬停时由 blue3 变为 blue5五、底层原理色板构建与颜色解析理解命名色的解析过程有助于你在调试自定义主题时快速定位问题。相关逻辑集中在 styler.mjs 中。1. 默认色板defaultPalette定义了 5 个内置基础色styler.mjslet defaultPalette { current: {string: currentColor, c: function() { return currentColor; }}, transparent: new Color(transparent, 0, 0, 100, 0%), clear: new Color(transparent, 100, 100, 100, 0%), black: new Color(black, 0, 0, 0, 100%), white: new Color(white, 0, 0, 100, 100%) };2. 色板的批量构建parseColors(palette, colors)styler.mjs遍历colors主题对象若某个色系的值为字符串则视为别名alias直接引用否则按name subname组合出blue0blue9这类完整色名并用parseColorString将 hex 解析为 HSL 分量后注册进palette。3. 色名的解析与插值混合$color(name)styler.mjs是解析入口核心逻辑如下用正则^([A-Za-z\-])(\d)(\d*)$拆出色系、档位与小数部分先在palette中精确命中如blue3未命中时向相邻两档取色浅一档from与深一档to按权重调用from.mix(to, hw, sw, lw)插值出新色边界处理档位低于可用范围时向blue1取色超出9时向black取色。这一机制意味着命名色不止支持整数档位。正则中的第三组捕获允许小数扩展例如blue35会被解析为 3.5 档——即blue3与blue4的 50% 混合色为精细调色提供了更大的自由度。六、类型支持与可验证性类型定义styles.generated.d.ts 中Ψcolor统一了所有颜色属性取值ccolor、bgcbackground-color、bcborder-color等简写属性均代理到对应完整属性。测试佐证interpolation.imba 覆盖了命名色与动态值混合的编译场景keyframes.imba 中也能看到命名色的实际使用。官方示例colors.imba 是文档配套的可运行演示完整展示了本文提到的全部写法。七、延伸阅读styles.mdImba 样式系统的整体语法入门style-properties.md样式属性的完整列表与简写规则style-units.md长度、角度等数值单位体系总结Imba 的颜色体系是「原生 CSS 颜色 Tailwind 命名色板」的统一融合——10 档色阶让取色有章可循任意位置可用让迁移零成本透明度与插值语法则让动态配色变得极其自然。掌握这套规则你就能在 Imba 中写出既严谨又灵活的颜色样式。赞分享编程语言编译器语言运行时【免费下载链接】imba The friendly full-stack language项目地址https://gitcode.com/gh_mirrors/im/imba点击查看免费下载相关推荐plotly.py 颜色体系完全指南命名 CSS 颜色与 CSS Color 4 全格式解析plotly.py 颜色体系完全指南命名 CSS 颜色与 CSS Color 4 全格式解析 本指南以 plotly.py 官方文档 doc/python/s数据可视化数据分析一次抓下视频号、抖音和 m3u8res-downloader 完整使用指南一次抓下视频号、抖音和 m3u8res downloader 完整使用指南 res downloader爱享素材下载器是一款基于 Go Wails 的桌面应用网络音视频Filament 颜色系统完全指南CSS 变量、11 档色板与 WCAG 无障碍取色原理Filament 颜色系统完全指南CSS 变量、11 档色板与 WCAG 无障碍取色原理 Filament 的颜色体系建立在 CSS 变量与 11 档色板之上后端UI组件前端上一篇终极浏览器Linux模拟器jor1k在线体验完整指南下一篇如何快速掌握 Mirage开源LLM超级优化工具实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考