哪个CSS压缩器/压缩器不会忽略时间单位值

本文关键字:压缩 时间 单位 CSS 哪个 | 更新日期: 2023-09-27 18:11:10

对于" 0上的单位" Firefox中的过渡"这个问题的回答指出忽略时间值的单位是无效的。我的第一个但不是主要的问题是:

这是真的吗?在时间值中省略单位肯定无效吗?

据我所知,在W3C规范中,关于长度值,它说

但是,对于零长度的单位标识符是可选的(…)。

对于其他类型的值则不是这样,但同时表示无效。"time - CSS | MDN"非常清楚地表明无效

所以,只是为了确定:有人可以确认它是无效的通过额外的引用吗?

主要问题:没有省略时间单位值的哪些缩小器/压缩器?

事实上,即使它是有效的,Firefox也会忽略像a { transition: all .5s 0 }

这样的声明因此,使用不而省略单元的压缩器/缩小器对我来说很重要。首先,Firefox将需要它,其次,如果无效,那么将来所有浏览器都可能需要它,并相应地更改它们的引擎。

注意:我正在ASP.net中进行开发,并希望为System.Web.Optimization命名空间使用Bundle Transformer。我需要一个可以在那里使用的压缩机。要么使用IMinifier接口的内置实现,要么至少使用一个可用的库,以便我可以编写自己的接口实现。

我会投票答案与迷你/压缩器,至少有一个API,所以它可以被编程使用。我将使用具有良好压缩的迷你器/压缩器来接受答案,该压缩器/压缩器可以在本地使用Bundle Transformer(这意味着不需要http请求)。


话虽如此:请随意提及任何不省略零时间值单位的迷你符,因为我认为这可能对每个人都很有趣,而不仅仅是。net开发人员。

现在我测试了以下工具:

  • YUI Compressor

    只是一个c#代码的例子,所以。net的人知道我在说什么:

    public static void RegisterBundles(BundleCollection bundles)
    {
        IBundleTransform yuiTrans = new CssTransformer(new YuiCssMinifier());
        var cssBundle = new Bundle("~/content/css/default", yuiTrans)
                                  .IncludeDirectory("~/content/css", "*.css");
    }
    

  • YUI在不省略时间单位值的情况下最小化CSS。

    2014年12月9日更新:遗憾的是,这不再是真的了。感谢Torin Finnemann对这个问题的评论。你可以用这个在线YUI压缩器自己测试。


    如果有像

    这样的声明
    a {
        transition: all 0.5s 0s;
    }
    
    YUI Compressor将其缩小为
    a{transition:all .5s 0s}
    

    为什么不直接使用它呢?嗯,目前我是,但是YUI的压缩级别不是很好(例如color: black变成color:black而不是color:#000)。CSS Minifier比较给出了一个概述。

  • System.Web.Optimization默认压缩器

    我不确定,但如果这篇博客文章是正确的,System.Web.Optimization有它自己的压缩器实现。在我的测试中产生不同输出的绝对不是Microsoft Ajax。但是,它将上面的示例缩小为

    a{transition:all .5s 0}
    

    如您所见,它省略了单元,因此不是替代选项。

  • 微软Ajax

    省略单位。

  • KryzhanovskyCssMinifier基于Sergey Kryzhanovsky的CSSO

    这是我测试的最后一个迷你器,所以我还没有那么多的经验,但它看起来比其他的更有前途。它足够聪明,可以缩小为以下内容(为了可读性添加了空白):

    a{   -moz-transition:all .5s 0s;-o-transition:all .5s 0;
      -webkit-transition:all .5s 0 ;   transition:all .5s 0}
    

    可以看到,除了供应商前缀版本-moz-transition之外,它省略了单元。目前,这是为Mozilla浏览器做的工作。我认为,Firefox从14.0版开始接受transition的非供应商前缀版本,但仍然承认前缀版本。由于缺少单元,Firefox会忽略默认语句,因此它使用带前缀的语句。

    嗯,正如我所说的,这是最有前途的迷你器,但它不是一个坚如磐石的解决方案,因为Mozilla可能有一天会在Firefox中删除对供应商前缀语句的支持。或者,正如我在本文开头所述,如果省略单元无效,则其他浏览器可以更新其引擎。

结论:问题仍然存在。

哪个CSS压缩器/压缩器不会忽略时间单位值

如果你知道一个不省略零时间值单位的缩小器/压缩器,请分享给我们。

虽然它们不缩小颜色,但以下两个在线缩小器保留了零时间值的单位。

http://cssminifier.com/

http://www.freeformatter.com/css-minifier.html

Clean-CSS允许您指定是否要从零值中剥离单位:https://github.com/jakubpawlowicz/clean-css#user-content-how-to-set-compatibility-mode

--compatibility *,-zeroUnits