#rgb #color #css-color #hsl #less #model #convert

farver

一个具有较少函数的易于颜色转换的Rust颜色库

1个稳定版本

3.1.0 2022年10月31日

#712 in 游戏开发

ISC许可证

89KB
2K SLoC

farver

css-colors

将CSS颜色转换的Rust转换器。🎨

安装

farvercrate添加到你的Cargo.toml依赖列表中

[dependencies]
farver = "3.1.0"

什么是farver?

此crate允许您使用Less函数创建和操作颜色,并在需要与多个crate交互时使用通用颜色类型

当您希望使用一定量的红色、绿色和蓝色来表示颜色时,RGB颜色模型非常有用。

background-color: rgb(255, 99, 71); // tomato

但是,也可以使用HSL颜色模型来表示相同的颜色,该模型指定了颜色的色调、饱和度和亮度

background-color: hsl(9, 100%, 64%); // also tomato!

您还可以使用CSS预处理器,如Less以有趣的方式操作这些颜色。

$tomato: hsl(9, 100%, 64%); // equivalent to rgb(255, 99, 71)
$dark-tomato: darken($tomato, 20%); // hsl(9, 100%, 44%)
$desaturated-tomato: desaturate($tomato, 40%); // hsl(9, 60%, 64%)

此crate允许您执行映射到Less的颜色操作API的操作。这些操作可以应用于RGB和HSL颜色模型。

示例

将颜色表示为有效的CSS字符串

use farver::{Color, rgb, hsla};

let salmon = rgb(250, 128, 114);
let chartreuse = hsla(90, 100, 50, 1.0);

assert_eq!(salmon.to_css(), "rgb(250, 128, 114)");
assert_eq!(chartreuse.to_css(), "hsla(90, 100%, 50%, 1.00)");

在不同的颜色模型表示之间进行转换

use farver::{Color, rgb, rgba, hsl, hsla};

let chartreuse = rgb(127, 255, 0);

assert_eq!(chartreuse.to_hsl(), hsl(90, 100, 50));
assert_eq!(chartreuse.to_hsla(), hsla(90, 100, 50, 1.0));
assert_eq!(chartreuse.to_rgba(), rgba(127, 255, 0, 1.0));

操作单个颜色以创建新的颜色模型表示

use farver::{Color, hsl, percent};

let chartreuse = hsl(90, 100, 50);

assert_eq!(chartreuse.darken(percent(20)), hsl(90, 100, 30));
assert_eq!(chartreuse.desaturate(percent(20)), hsl(90, 80, 50));
assert_eq!(chartreuse.greyscale(), hsl(90, 0, 50));

操作多个颜色以创建新的颜色模型表示

use farver::{Color, rgb, rgba, hsl, hsla, percent};

let chartreuse = hsl(90, 100, 50);
let red = rgba(100, 0, 0, 1.0);

assert_eq!(
    chartreuse.mix(red, percent(50)).to_css(),
    "hsla(67, 98%, 25%, 1.00)"
);
assert_eq!(chartreuse.tint(percent(50)).to_css(), "hsl(90, 100%, 75%)");
assert_eq!(chartreuse.shade(percent(50)).to_css(), "hsl(90, 98%, 25%)");

查看文档以了解更多关于可用的颜色操作的信息!

以下链接在您使用此crate时可能很有帮助。

  1. CSS3的RGB颜色模型
  2. CSS3的HSL颜色模型
  3. Less的颜色操作函数

贡献

安装

  • gitclone https://github.com/nyxkrage/farver
  • cdfarver
  • cargobuild

代码检查+插件

请在向此crate贡献时使用以下工具以确保代码一致性。

  • Rustfmt用于格式化代码风格

构建+测试

  • cargo build – 构建软件包
  • cargo test – 运行测试套件

许可证

本项目采用ISC许可证

依赖项

~0–18MB
~222K SLoC