Web制作をしていると、「このCSSプロパティ、古いブラウザでも動くのかな?」と気になることがあります。
そんな時に便利なのが、@supportsという機能です。
この記事では、CSS初心者でも理解できるように、@supportsの使い方やnotの活用例をわかりやすく解説します。
さぽーつ?解説おねがいしゃす。
@supportsとは?
@supportsは、特定のCSSプロパティや値がブラウザでサポートされているかどうかを判定できる条件付きルールです。
サポートされていれば中のCSSが有効になり、サポートされていなければ無視されます。
たとえば、次のように書きます。
@supports (display: grid) {
.container {
display: grid;
}
}
CSSこの例では、「display: grid」がブラウザでサポートされている場合のみ、.container
にdisplay: grid;
が適用されます。
つまり、機能検出(Feature Query)のための構文です。
@supportsの基本的な使い方
書き方の基本構文は以下のとおりです。
@supports (プロパティ: 値) {
/* サポートされている場合のCSS */
}
CSS複数条件を組み合わせることも可能です。
@supports (display: grid) and (aspect-ratio: 1/1) {
/* 両方の機能がサポートされている場合 */
}
@supports (display: grid) or (display: flex) {
/* どちらかがサポートされている場合 */
}
CSSこのようにandやorを使えば、柔軟に条件分岐を行えます。
CSS初心者でも、if文のような感覚で理解しやすいはずです。
notを使って「サポートされていない」場合のスタイルを指定する
指定した条件”以外“を指定することもできるの?
@supportsでは、notを使って「サポートされていない場合」を指定することもできます。
@supports not (display: grid) {
.container {
float: left;
}
}
CSSこの例では、gridが使えないブラウザでは代わりにfloatレイアウトを適用します。
つまりこれによって、古いブラウザには古いブラウザ用の対応できるということです。
notは、サポート外環境でのフォールバック(代替デザインのこと)を行う際に非常に便利です。
ブラウザのサポート状況
現在、主要なブラウザ(Chrome、Firefox、Safari、Edge)では
基本的に@supportsが広くサポートされています。
一方で、古いIE(Internet Explorer)は@supportsをサポートしていません。
まぁIEはほとんど使わないか。
具体的な活用例
実際のサイト制作で使うと、こんな感じです。
@supports (backdrop-filter: blur(10px)) {
.header {
backdrop-filter: blur(10px);
}
}
@supports not (backdrop-filter: blur(10px)) {
.header {
background-color: rgba(255, 255, 255, 0.9);
}
}
CSSこの例では、モダンなブラウザでは半透明のぼかし効果を適用し、
非対応のブラウザでは白い背景を代替として表示しています。
こうした使い方を覚えておくと、ユーザー体験を損なわずにデザインの完成度を保てます。
まとめ
- @supportsはCSSの機能検出ができる便利な構文
- and / or / notを使って条件を柔軟に設定可能
- 古いブラウザ向けにフォールバックを用意するのが実践的
- 主要ブラウザは対応済みなので、積極的に使える
CSS初心者でも@supportsを理解すれば、モダンなコーディングに一歩近づけます。
「対応しているブラウザだけ特定のデザインを適用したい」というときは、ぜひ活用してみてください。
あざした
