CSSツール

無料 CSS if()関数ビルダー

style()、media()、supports()条件を使用して、@mediaクエリなしでレスポンシブな値をインライン条件分岐するCSS if()を構築します。

ツールを読み込み中...

CSS if()関数ビルダーとは

CSSのif()関数を使うと、プロパティ宣言内に直接条件付き値を記述できます。値を@media、@container、@supportsのアットルールでラップする代わりに、if()をインラインで使用します:width: if(style(--variant: large): 300px else 150px)。3つの条件タイプをサポートしています。style()はCSSカスタムプロパティ値をチェックし、media()はmin-widthやprefers-color-schemeなどのメディア特性をテストし、supports()はブラウザが特定のCSS機能をサポートしているかを検出します。Chrome 137はif(style())を、Chrome 142はif(media())とif(supports())をサポートしています。

クイックアンサー

CSSのif()関数を使用すると、プロパティ宣言内にインラインで条件付き値を記述できます。if(style())でCSSカスタムプロパティに基づく分岐、if(media())でビューポート幅などのメディア特性に基づく分岐、if(supports())でブラウザ機能サポートに基づく分岐が可能です。Chrome 137以上がif(style())を、Chrome 142以上がif(media())とif(supports())をサポートします。

Last updated: 2026-05-30

制限事項

  • if()関数はChrome 137以上(style())およびChrome 142以上(media()、supports())でのみ利用可能です。2026年5月現在、FirefoxとSafariは安定版リリースでCSS if()をまだサポートしていません。
  • if()は単一の条件に対して単一の値を評価します。複数の宣言変更を持つ複雑なルールブロックに対して@mediaや@containerのアットルールを置き換えることはできません。
  • if(style())は明示的に設定されたカスタムプロパティまたは登録済みのカスタムプロパティでのみ機能します。ターゲット要素に明示的な値がなく先祖から継承されたカスタムプロパティは、一致しないものとして扱われます。

Sources:MDN Web Docs · W3C Specifications · jquery.app on GitHub

使い方

  1. 条件タイプを選択します。style()はCSSカスタムプロパティ値のチェック、media()はビューポートやユーザー設定のメディア特性、supports()は機能検出に使用します。
  2. 条件式と、条件が真の場合に使用する値を入力します。
  3. オプションで、条件が偽の場合に適用されるelse値を追加します。
  4. 生成されたif()宣言をコピーして、CSSプロパティ値に直接配置します。

主な用途

  • @containerクエリでルール全体をラップせずに、CSSカスタムプロパティ値に基づいて異なる幅を設定する。
  • 単一のプロパティ宣言内でprefers-color-schemeに基づいて条件付きでカラースキーム値を適用する。
  • ブラウザが特定のCSS機能をサポートしていない場合のフォールバック値をsupports()で提供する。

用途

使用例

バリアント変数に基づくコンポーネント幅

カードコンポーネントがstyle(--variant: featured)を使用して、注目カードに400px、標準カードに300pxの幅を設定します:width: if(style(--variant: featured): 400px else 300px)。@containerルールは不要です。

media()インラインを使用したレスポンシブフォントサイズ

単一の宣言内でビューポート幅に基づいて条件付きでフォントサイズを設定します:font-size: if(media(min-width: 768px): 1.25rem else 1rem)。単純なレスポンシブ値のために個別の@mediaブロックを記述する必要がありません。

よくあるミス

  • 複雑なマルチコンディションレイアウトにif(media())を使用する。if()は単一の条件付き値のために設計されており、すべてのメディアクエリの代替ではありません。複雑なレイアウトには可読性のために@mediaアットルールが適しています。
  • else分岐はオプションであることを忘れる。条件が偽の場合にelseを省略すると、プロパティは初期値または以前の宣言にフォールバックします。
  • 要素やその祖先に設定されていないカスタムプロパティにif(style())を適用する。style()は登録済みまたは明示的に設定されたカスタムプロパティのみを評価し、初期値にフォールバックする継承プロパティは評価しません。

検証

  1. Chrome DevToolsを開き、if()宣言のある要素を検査します。条件変数やメディア特性が変更されたときに計算値が変化することを確認します。
  2. 非対応ブラウザ(FirefoxやSafari)でページをテストし、else値またはフォールバック宣言がレイアウトを壊さずに正しく適用されることを確認します。

FAQ

CSS if()関数ビルダーのFAQ

if(style())と@container style()クエリの違いは何ですか?

@container style()クエリはルールブロック全体をラップし、条件が真の場合に内部のすべての宣言を適用します。if(style())関数はプロパティ宣言内でインラインに単一の条件付き値を適用します。同じ条件に複数のプロパティが依存する場合は@container style()を、1つの値だけを変更する必要がある場合はif(style())を使用します。if()アプローチは関連する値を同じ宣言ブロックにまとめて保持します。

各if()条件タイプをサポートするChromeバージョンは?

Chrome 137はif(style())をサポートし、CSSカスタムプロパティ値をクエリできます。Chrome 142はif(media())(メディア特性クエリ用)とif(supports())(機能検出用)を追加します。2026年5月現在、Chrome 142が最新安定版であるため、3つの条件タイプすべてが現在のChromeで動作します。FirefoxとSafariは安定版リリースでif()をまだ実装していません。

if(style())はカスタムプロパティの不在をチェックできますか?

いいえ。style()条件はカスタムプロパティの計算値をチェックし、コロン構文(style(--variant: large))で特定の値をテストするか、プロパティが設定されていること(style(--variant))を確認できます。プロパティの不在をテストすることはできません。存在状態と不在状態の両方を処理するには、プロパティにデフォルト値を明示的に設定し、それに対してテストします。

if(media())は通常の@mediaアットルールとどう違いますか?

if(media())は単一のプロパティ宣言内でインラインにメディア条件を評価し、条件付き値をフォールバックと同じ場所に保持します。@mediaアットルールはルールセット全体を複製します。単一の値の変更にはif(media())の方が簡潔です。同じブレークポイントで複数のプロパティが変更される場合は、ブレークポイントが1か所で定義されるため、@mediaの方が保守しやすいです。

関連ツール

その他のcssツール

こちらもお試しください

こちらもお試しください