2012-06-22 18 views
15

私はcssルールがかなり複雑であることを知っています。しかし、次のCSSは、オプティマイザによってさまざまな方法でかなり簡単に減らすことができませんでしたか?もしそうなら、レール・サスの宝石にそのオプションがありますか?SASSミニファイアは重複したスタイルを削除できますか?

span { 
    background: red; 
    color: green; 
} 

.test2 { 
    background: red; 
    color: green; 
} 

span { 
    background: green; 
    color: inherit; 
} 

.test2 { 
    background: inherit !important; 
    color: inherit; 
    color: inherit; 
    color: inherit; 
} 

追加コンテキスト:

明確に支援するため、私は同様に、次の...

出典提案する:

span { 
    background: red; 
} 
span { 
    background: orange; 
    color: green; 
} 
span { 
    background: yellow; 
} 
span { 
    background: blue; 
    color: green; 
} 

を、私はコンパイラを望みます以下を生成する:

span { 
    background: blue; 
    color: green; 
} 

冗長スタイルがあることは知っていますが、これはスタイルシートを頻繁に改訂するときに何度も起こり、デッドコードを除去したいのです。

+0

をあなたは[CSSTidy](http://csstidy.sourceforge.net/)を介して出力されたCSSを実行できますか好き。 – Whymarrh

答えて

0

ない私の知っていること、SASSだけWhymarrhさんのコメントを拡張しますhttp://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#output_style

のためにそれを最適化し、異なるコードをフォーマットしませんが、CSSTidyは、コマンドラインのビルドプロセスに統合することができ、ユーティリティまたは類似しています

sass --watch screen.sass --style compressed 
http://packages.ubuntu.com/hardy/csstidy
+0

csstidyの問題は何年も維持されていないため、新しいメディアセレクタと、グラデーションやレスポンシブなデザインに必要な複数のバックグラウンドプロパティをサポートするとは考えていません。 –

+0

それは正しいですが、未知のsyntaxisを無視するようにフラグを設定することもできます。少なくともそれはそのままですが、昨日いくつかのテストを実行し、10個のエクスポートされたCSSファイルのセットに対して結果が失望しました私たちは圧縮率で約1%の利得を得ていましたが、パフォーマンスが低下すると当社は非常に肛門であることを覚えておいてください。#ffffff(#fffの代わりに)は受け入れられません。 dは少なくともテストドライブのためにお勧めします:) – leopic

+3

node.jsがインストールされている場合は、[csso](https://github.com/css/csso)がアクティブに維持されているように見えます。このマニュアルでは、どのような最適化を行うかについて説明しています。 – rwb

0

は常にたとえば、あなたの称賛ライン

に '--style圧縮' オプションを使用してコードを最適化するには

SASSはあなたの人生を楽にしますが、現在の状態ではルビーコードを書くことができない限り完璧な最適化を行うことはできません。あなたの例では扱いにくいかもしれないいくつかの回避策がありますが、時間を節約し、自分で入力する必要はありません。 (また、除去されなければならないスペースを)あなたは、おそらく使用して、コードを最適化することができ、たとえば

これらのアプローチ:

span, .test2 { 
    background: red; 
    color: green; 
} 

の代わりに、純粋なCSSで

span { 
    background: red; 
    color: green; 
} 

.test2 { 
    background: red; 
    color: green; 
} 

それはと互換性がありますので、新しいSASS構文 をSASSに入れてください:

%theme-red-green { // i couldn't came up with better naming :) 
    background: red; 
    color: red; 
} 

span { 
    @extend %theme-red-green 
} 
.test2 { 
    @extend %theme-red-green 
} 
span { 
    background: red; 
    color: green; 
} 

.test2 { 
    background: red; 
    color: green; 
} 

はあなたが気づいています。同じ属性と値を繰り返し

span, .test2 { 
    background: red; 
    color: green; 
} 

及びません:我々はそれが最適化されたコードを生成するあなたの平野CSSにあなたが希望のようにカンマで区切られたスタイルを使用しなかった場合でも、

私は、 '.theme-'の代わりに '%theme-'を使用しました。これはあなたの出力を変えます。クラスセレクタが出力ファイルに含まれます

'継承'値を持つ2つの不要な '色'プロパティは、圧縮モードでも削除されません。

+2

問題のポイントは、コードの記述を最適化する方法ではなく、コンパイラにCSSの冗長行を「修正」させることでした。 –

+0

@MarshallAnschutzあなたはSASSで働いたことがありますか?あなたの意見で私の答えは間違っていますか?私のここでのポイントは、コンパイラにそれを修正するように指示することです、私はそれが自分自身でそれを把握する質問に答えた時点ではできませんでした。そのようにして、コードを最適化します。誰かが役に立つと分かっていたので、私を落とすのではなく、彼にもっと良い答えを与えてください。最後に何が得られるかは人々があなたから得る助けになるので、私は喜んでアップフォートを与えます。 – orustammanapov

+1

私の元の質問を見ると、4つのスパンを持つソースが1つのスパンに縮小されている可能性があります。明らかに、私はそれを書くことができますが、Bootstrapのようなライブラリを使用すると、スタイルを重複してオーバーライドし、重複するスタイルを引き起こします。私の質問は、コンパイラにドキュメントから未使用のCSSを自動的に削除させる方法を尋ねることです。 –

5

は私が少なくともCSSとSASS /少ないテンプレートの両方に重複したスタイルを見つける方法を発見したことを考える:

オープンソースcsscss宝石をhttp://zmoazeni.github.io/csscss/

それを検出することができるように思われます私はブートストラップの宝石のCSSの周りにサルのパッチを私のCSSの資産と同じフォルダにないことがありますが、重複しています。 、あなたが実行することができますドキュメントから

$ csscss -v path/to/styles.css 

または

$ csscss -v path/to/styles.css.scss 
+3

"私はbootstrap-sassの宝石のCSSの周りにサルのパッチをつけて、私のCSS資産と同じフォルダにいない" - [github](https://github.com/zmoazeni/csscss/issues)に問題を提出してください。あなたが何をしようとしているのか、何が動いていないのかを知りたい。 –

関連する問題