在combres文件中,我使用了 defaultCssMinifierRef="msajax"。
该压缩程序将所有零值的单位(px,em,ms)删除。 但是 0ms 不同于 0s。如果我需要在最小化后保留单位,该怎么办?
该压缩程序将所有零值的单位(px,em,ms)删除。 但是 0ms 不同于 0s。如果我需要在最小化后保留单位,该怎么办?
你不需要使用单位来保存0值。
在CSS中,使用没有单位的0与使用带有单位的0是相同的。
例如,你可以使用top: 20px
将元素放置在距离顶部20像素的位置,具体取决于其位置。
如果你使用top: 0
,浏览器会将其转换为top: 0px
,因此你不必担心这个问题。
编译器只会去掉值中的单位,例如0px
、0em
,因为它们是多余的,可以直接使用0
代替。
如果编译器去掉了top: 20px
中的值,这会导致问题,因为渲染引擎无法确定它是top: 20rem
还是top: 20px
,这两者之间存在明显的差异。
从具有单位的0值中去除单位实际上是一个优势,因为需要发送到网络的字节数更少,这只是非常微小的,但由于它是自动处理的过程,对于开发人员来说并不会有任何成本(例如考虑手动从单位中删除0值)。
然而,正如@torazaburo在评论中指出的那样,也有例外情况。在CSS中,例如100ms
、0.1s
的时间需要一个单位,但正如@torazaburo所指出的,这也会被缩短器自动处理,将像100ms
这样的内容缩短为0.1s
以节省字节。
transition-duration: 0;
是无效的,它需要一个时间单位。 - user6630310ms
转换为 0s
,以节省一个字节,同时保留时间所需的单位。 - user663031ms
不是频率,它是时间。但是时间仍然需要一个单位,比如s
或ms
。 - user663031flex: 1 0 0px;
。详情请参见:https://github.com/philipwalton/flexbugs#flexbug-4 - nils
0
和0ms
之间有什么区别? - alexcalc()
函数在0值上也需要一个单位,否则会失败。似乎除了Cloudflare之外的每个压缩器都有这个问题 ;) - dhaupin