Less - 颜色混合函数
LESS - 颜色混合函数
Section titled “LESS - 颜色混合函数”LESS 提供了一组颜色混合函数,允许混合两种颜色以生成第三种颜色。这些函数的操作方式类似于图像编辑软件(如 Photoshop 或 GIMP)中的混合模式。它们基于通道(红、绿、蓝)逐一进行操作,对输入颜色的对应通道值应用数学运算。Alpha 通道通常单独处理或按每个函数指定的方式处理。
这些函数对于程序化生成颜色主题、创建微妙的 UI 元素状态或实现复杂的颜色效果非常有用。
可用颜色混合函数
Section titled “可用颜色混合函数”下面是 LESS 中可用的颜色混合函数列表,包括描述和概念性示例。在这些示例中,假设 @color1 和 @color2 是有效的颜色值。
| 序号 | 函数、语法与描述 | 概念性效果 / 类比 |
|---|---|---|
| 1 | multiplymultiply(@color1, @color2)乘法模式混合两颜色的 RGB 通道。结果通常是较暗的颜色。与黑色相乘结果为黑色;与白色相乘颜色不变。 | 想象将两个彩色透明片叠在一起;结果会变暗。 |
| 2 | screenscreen(@color1, @color2)将 RGB 通道的反相值相乘,然后再次反相结果。这会产生更亮的颜色。与白色相屏结果为白色;与黑色相屏颜色不变。效果与 multiply 相反。 | 想象将两束彩色光投射到表面上;结果会更亮。 |
| 3 | overlayoverlay(@color1, @color2)结合了 multiply 和 screen。如果基础颜色(第一个参数)较暗,则执行乘法;如果较亮,则执行屏幕。这保留了基础颜色的高光和阴影,同时与第二种颜色混合。 | 适用于覆盖图案或纹理,同时保留基础颜色的明暗度。 |
| 4 | softlightsoftlight(@color1, @color2)应用更柔和的 overlay 版本。根据混合颜色(第二个参数)变暗或变亮。效果比 overlay 更微妙。 | 适用于柔和的高光或阴影效果。 |
| 5 | hardlighthardlight(@color1, @color2)类似于 overlay,但基础颜色和混合颜色的角色互换。就像第二种颜色是照射在第一种颜色上的强烈聚光灯。 | 创建比 softlight 更强的对比度。 |
| 6 | differencedifference(@color1, @color2)从较亮的颜色的通道值中减去较暗颜色的通道值。与白色混合会反相颜色;与黑色混合则不变。 | 可以产生鲜明、有时甚至是迷幻的色彩对比。 |
| 7 | exclusionexclusion(@color1, @color2)类似于 difference,但对比度较低。颜色相同时结果为黑色。 | difference 效果的柔和版本。 |
| 8 | averageaverage(@color1, @color2)计算两种输入颜色在通道(RGB)基础上的平均值。 | 简单的混合,结果是介于两种输入颜色之间的颜色。 |
| 9 | negationnegation(@color1, @color2)类似于 difference,但其中一种颜色的结果被反相。它就像 abs(colorA - (1 - colorB))。结果具有高对比度。 | 另一种实现强烈对比颜色效果的方法。 |
让我们看看这些函数如何在 LESS 样式表中使用:
// LESS Code@base-color: #007bff; // 亮蓝色@accent-color: #ffc107; // 亮黄色(偏橙色)@dark-overlay: #333333; // 深灰色@light-overlay: #eeeeee; // 浅灰色
.box { width: 100px; height: 100px; margin: 10px; display: inline-block; color: white; text-align: center; line-height: 100px;}
.multiplied { background-color: multiply(@base-color, @accent-color); // 预期:较暗,可能是浑浊的颜色}
.screened { background-color: screen(@base-color, @accent-color); // 预期:较亮,更鲜艳的颜色}
.overlay-dark { background-color: overlay(@base-color, @dark-overlay); // 预期:基础颜色变暗,保留一些特性}
.softlight-light { background-color: softlight(@base-color, @light-overlay); // 预期:基础颜色被微妙地提亮}
.averaged { background-color: average(@base-color, @accent-color); // 预期:介于蓝色和黄色/橙色之间的颜色}将此 LESS 编译并应用于具有相应类的 HTML 元素时,每个 .box 将根据混合操作具有不同的背景颜色。例如,.multiplied 可能是一种深色、略微去饱和的颜色,而 .screened 则是一种非常浅、充满活力的颜色。
- **主题:**通过将基础主题颜色与中性色或强调色混合来生成调色板。
- **UI 状态:**通过稍微变暗或变亮组件的基础颜色来创建
:hover、:active或:disabled状态(例如,background-color: screen(@button-color, #222)用于微妙的悬停效果)。 - **复杂背景:**无需多张背景图片或伪元素即可实现分层颜色效果。
- **数据可视化:**通过在关键颜色之间混合来程序化地生成色阶。
尝试使用这些函数是理解其效果的关键。使用在线 LESS 编译器是立即查看不同颜色组合和混合函数结果的好方法。