Internet Explorer 11以下では@supports
がサポートされていない。そのおかげで実装ベースで(CSSハックなどというものなしに)安全にCSSの新機能を試せるようになった。しかしそうなるとIE11などというもののために大量の@supports
が出てくることになり、精神衛生上良くない。実装がある方を優先させCSS全体を適当な@supports
で括ってしまえば良さそうだ。
View Demo: Ban <=IE11 with @supports
デモの段落は@supports
をサポートしている安定ブラウザーでは緑になり、IE11ではちゃんと赤になる。不明なAt規則とその子は無視されるようになっていることが確認できる。CSS仕様でもそうだが、IE11以下を含めおおよそすべてのブラウザーでこういう実装になっているはずだ。
CSS全体を括るのは雑過ぎるので、実際にはFlexboxやGridを使うレイアウトをうまくまとめて@supports
で括ることになるだろう。安定ブラウザーで実装の揃ったものを逃がす場として@supports
をざっくりと使うわけだ。実装が揃っておらず、切り分けないと致命的なもの(例えばtext-decoration-style
プロパティー)は引き続き@supports
をそれぞれで書くべきだろう。
プログレッシブ・エンハンスメントのベースラインを上げ、それに応じてIE11以下を必要最小限にする時にうまく使おうという話だ。それ以上でもそれ以下でもない。
@supports
をサポートしているかどうか調べるためのクエリーは、多分top: 0
が最も短い。より短いものを知っている・見つけた人はコッソリ教えて欲しい。