Windows 8 Release Preview の IE10 では、CSS グラデーションの W3C Candidate Recommendation (英語) がプレフィックスのない形式でサポートされます。また、IE10 では、2011 年 2 月 17 日の W3C 草案に基づく従来の CSS グラデーション構文 (英語) (ベンダー プレフィックス -ms- が前に付く) もサポートされます。今回の記事では、新旧の構文や動作の違いを紹介し、変更点について説明します。
-ms-
CSS を簡潔にするために、ベンダー プレフィックスの付いた CSS3 グラデーションからプレフィックスのない CSS3 に移行しようとすると、構文にいくつかの重要な変更が加えられていることに気が付くでしょう。多くのグラデーション ジェネレーターは、プレフィックスのないグラデーションのマークアップを含め、ブラウザーに依存しないマークアップを提供しています。多くの場合、プレフィックスのないマークアップは、グラデーションについて扱う CSS イメージの値の W3C Candidate Recommendation (英語) に基づき、無効となっています。ここでは、注意すべき変更点について説明します。
top
bottom
left
right
to
-ms-linear-gradient(top, orange, black);
linear-gradient(to bottom, orange, black);
-ms-linear-gradient(top left, fuchsia, yellow);
linear-gradient(to bottom right, fuchsia, yellow);
0deg
new = abs(old−450) mod 360
-ms-linear-gradient(200deg, lime, magenta);
linear-gradient(250deg, lime, magenta);
at
-ms-radial-gradient(center, aqua, black);
radial-gradient(at center, aqua, black);
farthest-corner
farthest-side
closest-corner
closest-side
contain
cover
-ms-radial-gradient(circle cover, lime, black);
radial-gradient(circle farthest-corner, lime, black);
-ms-radial-gradient(center, 50px 50px, red, black);
radial-gradient(circle 50px at center, red, black);
CSS3 グラデーションは、CSS イメージの値と置換コンテンツ モジュール レベル 3 W3C Candidate Recommendation (英語) で定義されています。グラデーションは、2009 年に初めて仕様に追加されました。当初は、WebKit で紹介されたグラデーション (英語) に基づいていましたが、構文に改良が加えられていました。その時点では、WebKit は -webkit-gradient() を実装していました。CSS ワーキング グループは、その機能を検討し、構文を変更しました。円形グラデーションと線形グラデーションは、linear-gradient()、radial-gradient() という別々のプロパティ値で指定されます。数年後、すべての主要ブラウザー (Chrome、Firefox、IE10 Platform Preview 1、Opera) が、2011 年 2 月 17 日の W3C 草案 (英語) で定義された CSS グラデーションをサポートするようになりました。
-webkit-gradient()
linear-gradient()
radial-gradient()
草案の内容を詳しく検討する過程でいくつかの変更が提案され、議論の結果、それらの変更を反映するように仕様が編集されました。上に示した重要な変更により、明確さや一貫性の点で、古い仕様よりも改善されています。たとえば、古い角度座標系では、正の角度が反時計回りに大きくなっていました。これは、角度が時計回りに大きくなる CSS 変換や SVG 変換とは逆です。仕様の変更により、CSS グラデーションを表す角度は、他の CSS 角度と一貫性を持つように (時計回りに大きくなるように) なりました。
グラデーション構文の変更の際には、仕様が草案の段階であるにもかかわらず互換性が問題となりました。すべてのケースで互換性があるわけではありませんが、既存のコンテンツのほとんどは動作します。既定値はそのままなので、レンダリングは変わりません。グラデーション線の方向については、キーワードの前に必須となった "to" によって、より明確になり、有効な文法が変更されました。古い構文を使ったプレフィックスのない既存のコンテンツは無効となるため、ベンダー プレフィックスの付いたバージョンに戻ることになります。
CSS3 グラデーションは現在は安定しているため、Candidate Recommendation に基づくプレフィックスのない正しいグラデーション構文に、グラデーション マークアップを更新することをお勧めします。Internet Explorer 10 開発者向けガイドには、プレフィックスのない構文の更新済みドキュメントが含まれています。IE10 はプレフィックスのないバージョンをサポートするため、-ms- プレフィックスが付いたグラデーションのインスタンスを削除することもできます。角キーワードまたは角度を使ってグラデーションの方向を記述している場合は、グラデーションが正しくレンダリングされることを確認できます。
ベンダー プレフィックスが付いたグラデーションは現在も IE10 やその他のブラウザーで動作しますが、プレフィックスがないグラデーションをサポートすることで、コンテンツを今後も使用できるようになります。
- Internet Explorer プログラム マネージャー Jennifer Yu