Qui CSS Minifiers/Compresseurs à ne pas omettre l'unité de temps des valeurs?

La anser à la question"Unités sur “0” Transition dans Firefox", souligne qu'il n'est pas valable pour omettre l'unité de temps des valeurs. Ma première mais pas la principale question serait:

Est-ce vrai? Est-il certain invalide à omettre des unités de valeurs de temps?

Aussi loin que je peux voir dans le Spécification du W3C, concernant la longueur des valeurs qu'il dit

Cependant, pour zéro longueurs de l'identifiant d'unité optionnelle (...).

Pas le cas pour les valeurs d'autres types, mais en même temps, il ne pas dire que c'est invalide. "temps - CSS | MDN" très clairement dit qu'il est invalide.

Donc, juste pour être sûr: quelqu'un Peut-il confirmer qu'il est invalide par des références supplémentaires?

Question principale: Qui minifiers/compresseurs ne pas omettre l'unité de temps des valeurs?

En fait, même si elle était valide, Firefox ignore les déclarations comme a { transition: all .5s 0 }

Donc, à l'aide d'un compresseur/minifier qui ne pas omettre l'unité me semble important. Tout d'abord Firefox en aurez besoin, d'autre part, il peut être nécessaire pour tous les navigateurs à l'avenir si elle est invalide et ils changent leurs moteurs en conséquence.


Note: je suis en développement dans ASP.net et que vous voulez utiliser la Bundle Transformateur pour System.Web.Optimization namesapce. J'ai besoin d'un compresseur qui je peux utiliser il. Soit avec un construit-dans la mise en œuvre de la IMinifier interface ou au moins un produit de la bibliothèque afin que je puisse écrire mon propre implémentation des interfaces.

Je vais upvote réponses avec minifiers/compresseurs à au moins une API de sorte qu'il peut être utilisé par programmation. Je vais accepter la réponse avec un minifier/compresseur avec une bonne compression qui est localement utilisable avec Bundle Transformateur (ce qui signifie pas de requête http est nécessaire).


Avec qui dit: n'hésitez pas à mentionner tout minifier à ne pas omettre l'unité de temps zéro des valeurs parce que je pense que cela pourrait être intéressant pour tout le monde, pas seulement .net développeurs.

Pour l'instant j'ai testé les outils suivants:

  • YUI Compressor

    Juste un exemple de code c# de la sorte .net les gars savent de quoi je parle:

    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 minifies CSS sans omettre l'unité des valeurs de temps.


    Mise à jour le 9 Décembre '14: Malheureusement, ce n'est plus vrai. Grâce à Torin Finnemann qui commenté sur cette question. Vous pouvez tester vous-même avec cette En ligne YUI Compressor.


    Donc si il y a une déclaration comme

    a {
        transition: all 0.5s 0s;
    }

    l'YUI Compressor minifies à

    a{transition:all .5s 0s}

    Pourquoi ne pas l'utiliser? Et bien, actuellement je suis, mais YUI du niveau de compression n'est pas très bonne (par exemple color: black devient color:black au lieu de color:#000). CSS Minifier Comparaison donne une vue d'ensemble. C'est pourquoi je suis à la recherche de solutions de rechange possibles.

  • De compression par défaut de System.Web.Optimization

    Je ne suis pas sûr, mais si ce blog est droit, System.Web.Optimization dispose d'un compresseur de mise en œuvre. C'est franchement pas Microsoft Ajax qui produit de sortie différents dans mes tests. Cependant, il minifies l'exemple ci-dessus pour

    a{transition:all .5s 0}

    Comme vous pouvez le voir, il omet l'unité et, par conséquent, n'est pas une alternative.

  • Microsoft Ajax

    N'omettez l'unité.

  • KryzhanovskyCssMinifier sur la base de Sergey Kryzhanovsky de CSSO

    C'était la dernière minifier j'ai testé, donc je n'ai pas beaucoup d'expérience avec elle encore, mais il semble beaucoup plus prometteur que les autres. Il est assez intelligent pour rapetisser à la suivante (ajout d'espaces pour des raisons de lisibilité):

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

    Comme vous pouvez le voir, il omet l'unité, sauf pour le vendeur préfixé version -moz-transition. Donc, en ce moment il fait le travail pour les navigateurs Mozilla. Firefox accepte la non-préfixé fournisseur versions de transition depuis la version 14.0, je pense, mais encore reconnaître le préfixe versions. Depuis Firefox ignore le défaut de déclaration en raison du manque d'unité, il utilise le préfixe un.

    Bien, comme je l'ai dit, c'est la plus prometteuse minifier, mais il n'est pas un rocher de la solution solide parce que Mozilla pourrait un jour retirer le support pour le fournisseur préfixé états dans Firefox. Ou, comme je l'ai dit au début de ce post, si omettre l'unité est invalide les autres navigateurs à mettre à jour leurs moteurs.

Conclusion: La question est toujours là. Si vous connaissez un minifier/compresseur à ne pas omettre l'unité de valeurs au temps zéro, s'il vous plaît partager.

  • De ce que je peux voir, la version actuelle de YUI-compresseur ne fait retirer l'unité. Il peut être contourné par la spécification de deux chiffres après la virgule: .00s. github.com/yui/yuicompressor/issues/99
  • Merci pour votre commentaire. Mise à jour de ma question.