CSS minificator 删除零值的单位(px、ms、em)

CSS minificator removes units for zero values (px, ms, em)

在 combres 文件中,我使用 defaultCssMinifierRef="msajax".

此缩小器删除了所有零值的单位(px、em、ms)。 但 0ms 与 0s 不同。 那么,缩小后需要保存单位怎么办?

您永远不需要用单位保存 0 个值。

在 CSS 中使用不带单位的 0 与使用带单位的 0 相同。 您可以使用 top: 20px,它会将元素放置在距离顶部 20px 的位置,具体取决于它的位置。

如果您使用 top: 0,浏览器会将其转换为 top: 0px,因此您根本不必担心。

您的编译器只会从 0px0em 等值中去除单位,因为它们是多余的,可以简单地用作 0

例如,如果要剥离 top: 20px 的值,这会导致问题,因为渲染引擎不知道它是 top: 20rem 还是 top: 20px比较起来明显不同。

用单位从 0 值中剥离单位实际上有一点优势,因为必须通过网络发送的字节更少,这只是非常小的,但由于它是一个自动过程,它不会真正花费你任何东西,因为开发人员(考虑到您必须手动从其单位中删除带有单位的 0 值)。

但是也有例外,正如 @torazaburo pointed out in the comments. Times in CSS e.g. 100ms, 0.1s require a unit but as @torazaburo 指出的那样,这也会由缩小器自动处理,将 100ms 缩短为 0.1s 以节省字节。

仅当 lengths 为零时,才能省略单位标识符。其他单位甚至对于零值也需要单位标识符。长度包括 empx 等。对于包含它是否更好存在一些争论(参见 this question and this one). A minifier will and should remove the unit identifier on lengths of zero. See the spec here:

for zero lengths the unit identifier is optional

非长度需要单位标识符,无论是否为零。如果一个 minifier 去掉了一个非长度的单位标识符,比如 ms 在作为 属性 transition-duration 的值给定的时候,它是 minifier 中的一个错误。