2012-03-10 4 views
13

は、私はこれをしなければならない。クロスブラウザCSS3コードをDRYにする方法はありますか?私はCSS3でグラデーション背景を作成する場合

background-color: #3584ba; 
background-image: -webkit-gradient(linear, left top, left bottom, from(#54a0ce), to(#3584ba)); /* Safari 4+, Chrome */ 
background-image: -webkit-linear-gradient(top, #54a0ce, #3584ba); /* Safari 5.1+, Chrome 10+ */ 
background-image: -moz-linear-gradient(top, #54a0ce, #3584ba); /* FF3.6 */ 
background-image:  -o-linear-gradient(top, #54a0ce, #3584ba); /* Opera 11.10+ */ 
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#54a0ce', endColorstr='#3584ba'); /* IE */ 

を、これは本当に迷惑です。私は使用している場合は、私のコードのクロスブラウザの互換性になりますよりよい解決策、例えばjQueryプラグインは、そこにある:

background-image: -webkit-linear-gradient(top, #54a0ce, #3584ba); /* Safari 5.1+, Chrome 10+ */ 

例えば? CSS3コードを書くのに役立つツールはありますか?

これらは一般的にCSSプリプロセッサと呼ばれている。

+2

それは迷惑なのですか... http://prefixr.com/ –

+0

あなたの非常に考えられた問題を解決するために+1 – abhijit

+3

@webarto - なぜホイールを再発明するのですか? :) –

答えて

20

これには多くのツールがあります。

あなたは(通常は "ミックスイン" と呼ばれる)関数定義のように、一度このような何かを書くことに終わるでしょう:

.linear-gradient(@start, @end) { 
    background-color: @end; 
    background-image: -webkit-gradient(linear, left top, left bottom, from(@start), to(@end)); /* Safari 4+, Chrome */ 
    background-image: -webkit-linear-gradient(top, @start, @end); /* Safari 5.1+, Chrome 10+ */ 
    background-image: -moz-linear-gradient(top, @start, @end); /* FF3.6 */ 
    background-image:  -o-linear-gradient(top, @start, @end); /* Opera 11.10+ */ 
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='@start', endColorstr='@end'); /* IE */ 
} 

を次に適用する:

.my-class { 
    .linear-gradient(#54a0ce, #3584ba); 
} 
.my-other-class { 
    .linear-gradient(#ccc, #aaa); 
} 

は非常にお勧めします。

+1

私は個人的にはLESSとLESSPHPをお勧めします。 +1は良いソリューションの範囲です。 – Bojangles

+0

PHP用の[cssmin](http://code.google.com/p/cssmin/)もあります。これは、ブラウザ特有のプロパティを追加するという意味で、もう少し伝統的ですが、それはどこにもありませんmixinやネストされたスタイルと同じように便利です(あなたのコードは標準的なCSSに改善されます)。 –

+0

[Bourbon](https://github.com/thoughtbot/bourbon)mixinのSass用コレクションには、ブラウザの互換性に関するすべての問題を処理するCSS3ミックスインが多数あります。 – Tomas

2

は私のコードを作るよりよい解決策、例えばjQueryプラグインがあり、クロスブラウザ互換

クライアント側のソリューションでは、http://lea.verou.me/prefixfree/

固定されていないCSSプロパティのみをどこでも使用できるスクリプト。 これは、バックグラウンドで動作し、現在のブラウザの接頭辞をCSSコードの に追加します。

その後、唯一の神秘的にあなたのCSSから欠落している接頭辞の機能を使用する必要があります:

background-image: linear-gradient(top, #54a0ce, #3584ba); 
+2

これらのプラグインは機能が制限されていますが遅いです。 SASS/LESSと一緒に行くか、何も使わないでください。 – vincicat

+0

はい、通常はサーバー側のプリプロセッサが優れています。しかし、それはクライアント側のオプションを言及する価値があった。 – thirtydot

0

私は質問への答えを見つけました。それは "autoprefixer"と呼ばれるプログラムで、無料で、Grunt(他のものと同様に)を使います。あなたは編集されていないcssをファイルまたはディレクトリに与え、ターゲットとする特定のブラウザに基づいてプレフィックスを自動的に追加し、それらを新しいファイルに出力します。ここでそれを使用する方法についての記事です。著者Autoprefixerについて

ポスト:http://24ways.org/2013/grunt-is-not-weird-and-hard/は そして、あなたはreadmeファイルを見つけるために、GitHubの上でそれを見ることができます:絶対初心者のためのうなり声を使用する方法http://css-tricks.com/autoprefixer/

私はまったく同じことを探していましたが、これは普通のCSSを処理するだけのベストソリューションでした。私はそれが助けて欲しい

0

https://autoprefixer.github.io/これを試してみてください。これは必ずしも簡単なコードを書くのに役立つわけではありません。これはjavascriptライブラリではありません。しかし、それはベンダープレフィックスを追加し、役に立たないCSSコードを取り除きます。

background-image: -webkit-linear-gradient(top, #54a0ce, #3584ba); 
background-image: linear-gradient(top, #54a0ce, #3584ba); 

あなたのコードを入れて、それは私が得る結果です。 (私はその結果を得るために元のコードから-webkit-を削除しました)。

関連する問題