14 个版本 (5 个重大变更)
0.7.0 | 2024 年 1 月 20 日 |
---|---|
0.6.1 | 2024 年 1 月 19 日 |
0.5.1 | 2024 年 1 月 17 日 |
0.4.3 | 2024 年 1 月 16 日 |
0.1.3 |
|
#131 in 图形 API
每月下载量 279
19KB
383 行
CSS z-index 值归一化到 32 位浮点数
注意
该项目仍在开发中,请关注新版本并确保使用最新版本。
起源
我在将 CSS z-index 值映射到 0.0 到 1.0 之间的 32 位浮点数时遇到了困难,因为将大数除以另一个大数(如 2_147_483_646.0 / 2_147_483_647.0
)不会得到精确的结果。
为了说明问题,这里有一些示例(见 沙盒)
2_147_483_646.0 / 2_147_483_647.0 = 1.0
2_147_483_645.0 / 2_147_483_647.0 = 1.0
2_147_483_644.0 / 2_147_483_647.0 = 1.0
2_147_483_643.0 / 2_147_483_647.0 = 1.0
2_147_483_642.0 / 2_147_483_647.0 = 1.0
2_147_483_641.0 / 2_147_483_647.0 = 1.0
2_147_483_640.0 / 2_147_483_647.0 = 1.0
2_147_483_639.0 / 2_147_483_647.0 = 1.0
2_147_483_638.0 / 2_147_483_647.0 = 1.0
2_147_483_637.0 / 2_147_483_647.0 = 1.0
我花了一些时间来尝试找出一个合理的解决方案,也许我终于找到了解决映射 CSS z-index 值头痛问题的方法。
用法
在您的项目目录中运行以下 Cargo 命令
cargo add normalize-css-z
或将以下行添加到您的 Cargo.toml
[dependencies]
normalize-css-z = "0.7"
并在您的 Rust 文件中
use normalize_css_z::normalize;
fn main() {
let z_ = 2_147_483_647;
if let Some(z) = normalize(z_) {
// Do something with `z`.
} else {
// Handle unsupported z-index.
}
}
从版本 0.6 开始,'custom' 功能标志下现在提供了自定义的低、中、高范围
注意:此版本尚未经过彻底测试。
要使用,请将以下行添加到您的 Cargo.toml
[dependencies]
normalize-css-z = { version = "0.7", features = ["custom"] }
并在您的 Rust 文件中
use normalize_css_z::{
normalizer::Normalizer,
ranges::RangesBuilder,
};
fn main() {
let builder = RangesBuilder::default()
.with_lower(0..=100)
.with_middle(101..=200)
.with_upper(201..=300);
let normalizer = Normalizer::new(builder.build());
if let Some(z) = normalizer.calc(0) {
// Do something with `z`.
} else {
// Handle unsupported z-index.
}
}
支持的 z-index 范围
下限 | 中间 | 上限 |
---|---|---|
-2_147_483_647..=-2_139_095_039 |
-4_194_303..=4_194_304 |
2_139_095_040..=2_147_483_647 |
支持的 z-index 总数(截至 2024 年 1 月 16 日)
8,388,608 * 3 + 1 = 25,165,825
许可
根据您的选择,许可方式为以下之一
。