Newly available 主要ブラウザで対応が進んでいるが、段階的強化として使用するのが安全。

概要

JavaScriptが有効か無効かをCSSから検出できる。scripting: none ではJS無効時のフォールバックUIを、scripting: enabled ではJS前提のUIを定義できる。プログレッシブエンハンスメントの実装に有用で、<noscript> タグのCSS版とも言える。

対応ブラウザ

デスクトップ

Chrome 120+
Edge 120+
Safari 17+
Firefox 113+

モバイル

Chrome Android 120+
Safari iOS 17+
Firefox Android 113+

基本構文

CSS
/* JS無効時にフォールバックUIを表示 */
@media (scripting: none) {
  .js-only {
    display: none;
  }
  .no-js-fallback {
    display: block;
  }
}

/* JS有効時のみ表示 */
@media (scripting: enabled) {
  .interactive-widget {
    display: block;
  }
}

実務での使いどころ

  • JS無効時のフォールバック

    JavaScriptが無効な環境でも最低限のUIを提供するプログレッシブエンハンスメントを実現する。

  • 動的コンポーネントの出し分け

    JSが利用できる場合のみインタラクティブなウィジェットを表示し、無効時は静的な代替を表示する。

注意点

  • ブラウザ拡張によるJS無効化など、検出が意図通りに動作しないエッジケースがある。

アクセシビリティ

  • JS無効環境でもコンテンツにアクセスできるフォールバックを提供することで、アクセシビリティが向上する。