#css #graphics #z-index

bin+lib normalize-css-z

CSS z-index 值归一化到 32 位浮点数(好吧,有点...)

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 2024 年 1 月 13 日

#131 in 图形 API

Download history 83/week @ 2024-03-09 93/week @ 2024-03-16 38/week @ 2024-03-23 67/week @ 2024-03-30 111/week @ 2024-04-06 48/week @ 2024-04-13 32/week @ 2024-04-20 87/week @ 2024-04-27 64/week @ 2024-05-04 1/week @ 2024-05-11 18/week @ 2024-05-18 12/week @ 2024-05-25 51/week @ 2024-06-01 60/week @ 2024-06-08 96/week @ 2024-06-15 68/week @ 2024-06-22

每月下载量 279

MIT/Apache

19KB
383

CSS z-index 值归一化到 32 位浮点数

crate documentation build status

注意

该项目仍在开发中,请关注新版本并确保使用最新版本。

起源

我在将 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

许可

根据您的选择,许可方式为以下之一

无运行时依赖项

功能