diff --git a/crates/swc_css_minifier/src/compressor/color.rs b/crates/swc_css_minifier/src/compressor/color.rs index aad86a1f1b4d..6d1edbbfe1bf 100644 --- a/crates/swc_css_minifier/src/compressor/color.rs +++ b/crates/swc_css_minifier/src/compressor/color.rs @@ -151,8 +151,9 @@ macro_rules! make_color { let is_alpha_hex_supported = false; if is_alpha_hex_supported { + let alpha = (($a * 255.0) as f64).round().max(0.0).min(255.0) as u8; let hex: u32 = - ((r as u32) << 24) | ((g as u32) << 16) | ((b as u32) << 8) | ($a as u32); + ((r as u32) << 24) | ((g as u32) << 16) | ((b as u32) << 8) | (alpha as u32); let compact = get_short_hex(hex); let value = if hex == get_long_hex(compact) { diff --git a/crates/swc_css_minifier/tests/fixture/compress-color/input.css b/crates/swc_css_minifier/tests/fixture/compress-color/input.css index fb19e8e604ac..c32d2c89422d 100644 --- a/crates/swc_css_minifier/tests/fixture/compress-color/input.css +++ b/crates/swc_css_minifier/tests/fixture/compress-color/input.css @@ -436,3 +436,8 @@ color: #123f; color: #123abcff; } + +.a { + color: hsl(270, 100%, 50%, 50%); + background: hsl(270, 100%, 50%, 0.5); +}