Skip to content

Less - 颜色操作

Less 提供了一套强大的内置函数用于颜色操作。这些函数允许您动态调整饱和度(saturation)、亮度(lightness)和不透明度(opacity)等颜色属性,甚至可以将颜色混合。它们通常作用于颜色值,并且经常接受百分比或数值作为参数。以下是常用颜色操作函数的列表:

函数描述示例
saturate(@color, @amount)将颜色的饱和度增加指定的量(百分比)。saturate(hsl(120, 30%, 90%), 20%) 结果是 hsl(120, 50%, 90%)。
desaturate(@color, @amount)将颜色的饱和度减少指定的量(百分比)。desaturate(hsl(120, 50%, 90%), 20%) 结果是 hsl(120, 30%, 90%)。
lighten(@color, @amount)将颜色的亮度增加指定的量(百分比)。lighten(#555, 10%) 结果是 #6b6b6b。
darken(@color, @amount)将颜色的亮度减少指定的量(百分比)。darken(#555, 10%) 结果是 #3c3c3c。
fadein(@color, @amount)将颜色的不透明度增加指定的量(百分比),即降低透明度。fadein(rgba(0,0,0,0.5), 10%) 结果是 rgba(0,0,0,0.6)。
fadeout(@color, @amount)将颜色的不透明度减少指定的量(百分比),即增加透明度。fadeout(rgba(0,0,0,0.5), 10%) 结果是 rgba(0,0,0,0.4)。
fade(@color, @amount)将颜色的绝对不透明度设置为指定的量(百分比)。fade(#ff0000, 30%) 结果是 rgba(255,0,0,0.3)。
spin(@color, @angle)按指定的角度(度)旋转颜色的色相(hue)。spin(hsl(10, 90%, 50%), 30) 结果是 hsl(40, 90%, 50%)。
mix(@color1, @color2, @weight)按给定的比例(权重默认为 50%)混合两种颜色。不透明度也会被考虑。mix(#ff0000, #0000ff, 50%) 结果是 #800080。
tint(@color, @amount)将颜色与白色混合。第二个参数(百分比)指定混合白色的量。tint(#f00, 50%) 结果是 #ff7f7f。
shade(@color, @amount)将颜色与黑色混合。第二个参数(百分比)指定混合黑色的量。shade(#f00, 50%) 结果是 #7f0000。
grayscale(@color)将颜色转换为灰度。相当于 desaturate(@color, 100%)。grayscale(#ff0000) 结果是 #7f7f7f(近似)。
contrast(@color, @darkcolor, @lightcolor, @threshold)将 @color 与 @darkcolor 和 @lightcolor(默认为黑色和白色)进行比较。如果 @color 的亮度(luma)低于阈值 @threshold(默认 50%),则返回 @darkcolor,否则返回 @lightcolor。对于可访问的文本很有用。contrast(#bbbbbb, #000, #fff) 结果是 #000000(黑色)。

这些函数对于创建动态主题、生成调色板(color palettes)以及确保网页设计中可访问的颜色对比度非常有价值。通过允许您从基础颜色变量派生新颜色,它们有助于创建可复用和可维护的样式表。

例如,您可以定义一个基础品牌颜色,然后使用 lighten 和 darken 为悬停状态(hover states)或边框(borders)创建变体:

@brand-primary: #007bff;
.button {
background-color: @brand-primary;
border: 1px solid darken(@brand-primary, 10%);
&:hover {
background-color: lighten(@brand-primary, 10%);
}
}
  • 百分比值(Percentage Values): 大多数函数期望百分比量(例如,lighten(@color, 10%))。在期望百分比的地方使用无单位数字可能会导致意外结果或错误。请务必查阅函数文档。
  • 函数链式调用(Chaining Functions): 颜色函数可以强大地链式调用:color: darken(saturate(@base-color, 10%), 5%);。
  • 可访问性(Accessibility): 使用 contrast 等函数时,请始终使用可访问性工具测试结果颜色组合,以确保所有用户都能轻松阅读。不要仅仅依赖于函数;视觉和工具检查都很重要。
  • 探索更多: 官方 Less 文档列出了所有可用的颜色函数及其特定参数。在在线 Less 编译器中尝试使用它们,即可立即看到效果。