1个稳定版本
3.1.0 | 2022年10月31日 |
---|
#712 in 游戏开发
89KB
2K SLoC
farver
将CSS颜色转换的Rust转换器。🎨
安装
将farver
crate添加到你的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时可能很有帮助。
贡献
安装
gitclone https://github.com/nyxkrage/farver
cdfarver
cargobuild
代码检查+插件
请在向此crate贡献时使用以下工具以确保代码一致性。
- Rustfmt用于格式化代码风格
构建+测试
cargo build
– 构建软件包cargo test
– 运行测试套件
许可证
本项目采用ISC许可证。
依赖项
~0–18MB
~222K SLoC