From 87531152e39482ac706b9713cf48e38dbf7409a5 Mon Sep 17 00:00:00 2001 From: Cong-Cong Pan Date: Tue, 8 Sep 2026 16:02:48 +0800 Subject: [PATCH] fix: minify zero-valued translate3d in a single pass --- src/lib.rs | 64 +++++++++++++++++++++++++++++++++++++ src/properties/transform.rs | 2 +- 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 6416b7bae..1236cac51 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -13364,6 +13364,70 @@ mod tests { ); } + #[test] + fn test_zero_translate3d() { + minify_test( + indoc! {" + .foo { + transform: translate3d(0, 0, 0); + } + "}, + ".foo{transform:translate(0)}", + ); + minify_test( + indoc! {" + .foo { + transform: translate3d(0px, -0%, 0em); + } + "}, + ".foo{transform:translate(0)}", + ); + minify_test( + indoc! {" + .foo { + transform: translate3d(0%, 0px, -0px); + } + "}, + ".foo{transform:translate(0%)}", + ); + minify_test( + indoc! {" + .foo { + transform: translate3d(calc(1px - 1px), 0, 0) rotate(30deg); + } + "}, + ".foo{transform:translate(0)rotate(30deg)}", + ); + minify_test( + indoc! {" + .foo { + -webkit-transform: translate3d(0, 0, 0); + } + "}, + ".foo{-webkit-transform:translate(0)}", + ); + minify_test( + indoc! {" + .foo { + transform: translate3d(0, 0, var(--z)); + } + "}, + ".foo{transform:translate3d(0, 0, var(--z))}", + ); + test( + indoc! {" + .foo { + transform: translate3d(0, 0, 0); + } + "}, + indoc! {" + .foo { + transform: translate3d(0, 0, 0); + } + "}, + ); + } + #[test] pub fn test_gradients() { minify_test( diff --git a/src/properties/transform.rs b/src/properties/transform.rs index 255beeeb8..7e5763fb9 100644 --- a/src/properties/transform.rs +++ b/src/properties/transform.rs @@ -1058,7 +1058,7 @@ impl ToCss for Transform { dest.write_char(')') } Translate3d(x, y, z) => { - if dest.minify && !x.is_zero() && y.is_zero() && z.is_zero() { + if dest.minify && y.is_zero() && z.is_zero() { dest.write_str("translate(")?; x.to_css(dest)?; } else if dest.minify && x.is_zero() && !y.is_zero() && z.is_zero() {