2013-04-27 37 views
2

問題「Units on 「0s」 Transition in Firefox」的指針指出忽略時間單位值是無效的。我的第一個但不是主要的問題是:哪些CSS縮小器/壓縮器不會忽略時間單位值?

這是真的嗎?在時間值中忽略單位肯定無效嗎?

據我可以在W3C specification看到,關於長度值,它說

但是,對於零長度的單元標識符是可選的(......)。

不那麼其他類型的值,但同時它也確實說,這是無效。 「time - CSS | MDN」很清楚地說明了它無效

所以,只是可以肯定的:任何人都可以確認它是無效通過其他參考嗎?

主要問題:哪些縮小器/壓縮機做不是省略時間單位值?

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

所以聲明,使用壓縮機/ minifier,做省略單位似乎對我很重要。首先,Firefox將需要它,其次,如果它將來可能需要所有瀏覽器,如果它無效,並且他們相應地更改其引擎。


注:我正在開發在ASP.net,想使用Bundle TransformerSystem.Web.Optimization namesapce。我需要一臺可以在那裏使用的壓縮機。無論是內置的IMinifier接口還是至少一個可用的庫,我都可以編寫我自己的接口實現。

我會用壓縮機/壓縮機來解決問題,因爲壓縮機至少有一個API,所以它可以通過程序使用。我會接受一個具有良好壓縮的壓縮器/壓縮器的答案,這個壓縮器可以與Bundle Transformer一起使用(這意味着不需要http請求)。


隨着中說:請隨時提任何 minifier不省略的零時間單位價值,因爲我認爲這可能對大家很有趣,不只是.NET開發人員。

現在我測試了以下工具:

  • YUI Compressor

    僅舉一例C#代碼等等。淨傢伙知道我在說什麼:

    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沒有omiting時間值的單位minifies CSS。


    更新12月9日'14:可悲的是,這是不正確的了。感謝Torin Finnemann誰在這個問題上commented。你可以用Online YUI Compressor自己測試一下。


    所以,如果有喜歡的

    a { 
        transition: all 0.5s 0s; 
    } 
    

    聲明的YUI壓縮機minifies它

    a{transition:all .5s 0s} 
    

    爲什麼不使用它?那麼,目前我是,但YUI的壓縮級別不是很好(例如color: black變爲color:black而不是color:#000)。 CSS Minifier Comparison給出了一個概述。這就是爲什麼我正在尋找可能的替代方案。

  • System.Web.Optimization

    默認壓縮我不知道,但如果this blog post是正確的,System.Web.Optimization有它自己的壓縮機實現。它不是Microsoft Ajax,它在我的測試中產生不同的輸出。但是,它將以上示例縮小爲

    a{transition:all .5s 0} 
    

    正如您所看到的,它省略了單位,因此不是替代選項。

  • Microsoft Ajax

    是否忽略單元。

  • KryzhanovskyCssMinifier based on Sergey Kryzhanovsky's CSSO

    這是我測試的最後minifier,所以我沒有它那麼多的經驗,但,但它看起來比其他人更加有前途。它是足夠聰明來縮小以下(爲便於閱讀,添加空格):

    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中供應商前綴語句的支持。或者,正如我在本文開頭所述,如果忽略設備無效,其他瀏覽器可能會更新其引擎。

結論:問題仍然存在。如果您知道不會忽略零時間值單位的縮小器/壓縮器,請分享它。

+1

從我所看到的,當前版本YUI壓縮機實際上會移除該單元。它可以通過指定兩位十進制數字來規避:.00s。 https://github.com/yui/yuicompressor/issues/99 – 2014-12-08 11:59:29

+0

@TorinFinnemann:感謝您的評論。更新我的問題。 – 2014-12-09 12:39:44

回答