質問「Firefox の “0s” トランジションの単位」に対する回答では、時間の値の単位を省略することは有効ではないことが指摘されています。私の最初の、しかし主要ではない質問は次のとおりです。
これは本当ですか?時間値の単位を省略することは確かに無効ですか?
私がW3C仕様で見ることができる限り、長さの値に関してそれは言う
ただし、長さがゼロの場合、ユニット識別子はオプションです (...)。
他の型の値についてはそうではありませんが、同時にそれが無効であるとも言いません。「time-CSS | MDN 」は、それが無効であると非常に明確に述べています。
念のために言っておきますが、追加の参照によって無効であることを誰かが確認できますか?
主な質問:時間値の単位を省略しないミニファイアー/コンプレッサーはどれですか?
実際、有効であったとしても、Firefoxは次のような宣言を無視します。a { transition: all .5s 0 }
そのため、単位を省略しないコンプレッサー/ミニファイアーを使用することが重要だと思われます。第一に Firefox がそれを必要とし、第二に、それが無効であり、それに応じてエンジンを変更した場合、将来すべてのブラウザで必要になる可能性があります。
注: 私は ASP.net で開発しており、namespace にBundle Transformerを使用したいと考えていますSystem.Web.Optimization
。そこで使えるコンプレッサーが必要です。インターフェイスの組み込み実装IMinifier
または少なくとも使用可能なライブラリを使用して、インターフェイスの独自の実装を作成できます。
プログラムで使用できるように、少なくともAPIを備えたミニファイア/コンプレッサーで回答に賛成します。Bundle Transformer でローカルに使用できる (つまり、http 要求は必要ありません) 圧縮率の高いミニファイアー/コンプレッサーで回答を受け入れます。
そうは言っても、.net開発者だけでなく、すべての人にとって興味深いものになると思うので、ゼロ時間値の単位を省略しないミニファイアーについて自由に言及してください.
今のところ、次のツールをテストしました。
-
.net の人は私が話していることを知っているので、C# コードの 1 つの例:
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 を縮小します。
Update Dec 9 '14 : 残念ながら、これはもはや真実ではありません。この問題についてコメントしてくれたTorin Finnemannに感謝します。このOnline YUI Compressorで自分でテストできます。
したがって、次のような宣言がある場合
a { transition: all 0.5s 0s; }
YUI Compressor はそれを次のように縮小します。
a{transition:all .5s 0s}
なぜそれを使用しないのですか?まあ、今はそうなんですが、YUI の圧縮レベルがあまり良くありません (例えばの代わりに に
color: black
なるなど)。CSS Minifier の比較では、概要を説明しています。そのため、可能な代替手段を探しています。color:black
color:#000
デフォルトのコンプレッサー
System.Web.Optimization
よくわかりませんが、このブログ投稿が正しければ、
System.Web.Optimization
独自のコンプレッサー実装があります。私のテストで異なる出力を生成するのは、間違いなくMicrosoft Ajaxではありません。ただし、上記の例を次のように縮小します。a{transition:all .5s 0}
ご覧のとおり、単位が省略されているため、代替手段ではありません。
-
単位を省略します。
KryzhanovskyCssMinifier
Sergey Kryzhanovsky の CSSO に基づくこれは私がテストした最後のミニファイヤーだったので、まだそれほど多くの経験はありませんが、他のものよりもはるかに有望に見えます. 次のように縮小するのに十分スマートです(読みやすくするために空白を追加しました):
a{ -moz-transition:all .5s 0s;-o-transition:all .5s 0; -webkit-transition:all .5s 0 ; transition:all .5s 0}
ご覧のとおり、ベンダー プレフィックスの version 以外の単位は省略されてい
-moz-transition
ます。したがって、現在、これは Mozilla ブラウザの仕事をしています。Firefox は、transition
バージョン 14.0 以降のベンダー接頭辞のないバージョンを受け入れますが、接頭辞付きのバージョンは引き続き認識します。Firefox は、ユニットがないためにデフォルトのステートメントを無視するため、プレフィックス付きのステートメントを使用します。前述したように、これは最も有望なミニファイヤーですが、Mozilla が Firefox のベンダー プレフィックス付きステートメントのサポートをいつの日か削除する可能性があるため、これは堅実なソリューションではありません。または、この投稿の冒頭で述べたように、単位を省略すると無効な場合、他のブラウザーがエンジンを更新する可能性があります。
結論: 問題はまだ残っています。ゼロ時間値の単位を省略しないミニファイヤ/圧縮プログラムを知っている場合は、共有してください。