Microsoftはベンダープレフィックス付きでCSS3の先行実装を積極的に公開しない方針らしく、グラデーションなどの新しい機能を利用することができません。一応単純なグラデーションはIE独自のfilterで実現できるのですが、途中にcolor-stopを挟むような複雑なグラデーションは利用できません。
この記事では、IE9で複雑なグラデーションを実現する方法を紹介します。IE8以下ではどうやっても無理だと思うので諦めてください。
SVGを利用する
IE9はSVGの表示に対応しているので、background-imageにSVGを指定すればグラデーションを実現できます。これについては以下の記事で紹介されています。
しかし、この方法はSVGファイルを用意しておく必要があり非常に面倒です。そこで、SCSSとCompassを利用してSVGを自動生成するようにしてみます。
SCSSとCompass
SCSSはRailsでも利用されるようになったのでご存じの方も多いと思いますが、CSSを生成するための言語です。CSSにはない多数の機能を持っており、より簡潔な記述で目的を達成できるようになります。
今回利用するのはMixinという機能です。よく使う機能をMixinとして定義しておくことで、後からincludeして再利用できるようになります。Compassは多数のMixinを提供してくれるフレームワークで、includeするだけで簡単に複雑なCSSを生成できます。
SCSSやCompassの基本的な使い方は以下が参考になると思います。
利用例
SCSSとCompassでグラデーションを実現するためには、scssファイルの先頭でcompass/css3をimportし、background-imageをincludeします。
IE9向けにSVGを出力するためには、$experimental-support-for-svg
にtrueをセットしておきます。
これを変換すると、以下のようなCSSが生成されます。1つのincludeから非常に長いコードが出力されていることがわかると思います。SVGもばっちり生成されて埋めこまれていますね。
おわりに
SCSSとCompassを利用することで、手作業では困難なSVGを自動生成することができました。ついでにベンダープレフィックス付きのプロパティを生成してくれるのも地味に便利だったりするので、CSS3の新機能をガンガン使いたいという場合にはオススメです。