在combres文件中,我使用 defaultCssMinifierRef =“msajax”。
此缩小器删除所有零值的单位(px,em,ms)。 但0ms与0不同。 那么,如果我需要在缩小后保存单位,我该怎么办?
答案 0 :(得分:5)
只有长度为零时,才能省略单位标识符。即使值为零,其他单位也需要单位标识符。长度包括em
,px
等。关于是否更好地包含它,存在一些争论(请参阅this question和this one)。缩小器将删除长度为零的单元标识符。请参阅规范here:
对于零长度,单位标识符是可选的
非长度需要单位标识符,无论是否为零。如果minifier删除非长度的单位标识符,例如在作为属性ms
的值给出的时间内transition-duration
,则它是minifier中的错误。
答案 1 :(得分:1)
您不需要用一个单位保存0个值。
在CSS中使用不带单位的0意味着与单位0相同。
您可以使用top: 20px
,它会将元素从顶部放置20px,具体取决于其位置。
如果您使用top: 0
,则会被浏览器翻译为top: 0px
,因此您根本不必担心这一点。
您的编译器只会删除0px
,0em
等值的单位,因为它们是多余的,可以简单地用作0
。
如果要从top: 20px
中删除该值,这会导致问题,因为呈现引擎不知道它是top: 20rem
还是top: 20px
比较时有很大的不同。
从单位的0值中剥离单位实际上有点优势,因为必须通过网络发送较少的字节,这只是非常小的,但由于它是一个自动过程,所以它并不是真的作为开发人员花费你的任何成本(因为你要考虑到你手动必须从他们的单位剥离0值)。
但是,@torazaburo在评论中指出了例外情况。 CSS中的时间,例如100ms
,0.1s
需要一个单位,但@torazaburo指出,缩小器也会通过缩短100ms
到0.1s
之类的内容来自动处理,以节省字节数。