CSSツール

無料 CSS Scroll-State Query Generator

Generate CSS scroll-state() container queries for styling snapped, stuck, or scrollable elements. Includes JavaScript fallback for cross-browser support.

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

CSS Scroll-State Query Generatorとは

スクロールステートコンテナクエリはコンテナのスクロール状態に基づいて要素をスタイル設定できるCSS機能です。JavaScriptを使用してスクロール位置を検出してクラスを切り替える代わりに@container scroll-state(...) クエリを記述して要素がスナップされたときスティッキーになったときまたはコンテナがスクロール可能なときに自動的にスタイルを適用します。これによりアクティブなカルーセルインジケーターやスティッキーヘッダーのシャドウなどをJavaScriptなしで実現できます。

クイックアンサー

CSS scroll-state()クエリを@containerルール内で使用してJavaScriptなしでスクロール位置に基づいて要素をスタイル設定します。スナップ、スティッキー、スクロール可能、オーバーフローの状態を対象にします。container-type: scroll-stateとChrome 135以上が必要です。クロスブラウザサポートのためにJSフォールバックを含めてください。

Last updated: 2026-05-28

制限事項

  • スクロールステートクエリにはChrome 135以上が必要でFirefoxやSafariではまだサポートされていません。本番環境では常にJavaScriptフォールバックを提供してください。
  • スクロールステートクエリが機能するにはコンテナにcontainer-type: scroll-stateが設定されている必要があります。これはサイズやインラインサイズのクエリとは別のコンテナタイプです。
  • 利用可能なスクロール状態は限られています:snapped、stuck、scrollable、overflowing。複雑なスクロール駆動アニメーションには依然としてJavaScriptまたはスクロール駆動アニメーション(@scroll-timeline)が必要です。

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

使い方

  1. 対象とするスクロール状態を選択します。スナップ(アクティブなスナップ項目)、スティッキー(スティッキー要素)、またはスクロール可能(オーバーフローがあるコンテナ)。
  2. ターゲットのCSSセレクターとスクロールコンテナセレクターを設定します。
  3. 状態がアクティブなときに適用するスタイルの変更(不透明度、拡大縮小、境界線、背景)を選択します。
  4. CSS、デモHTML、およびオプションのJavaScriptフォールバックスニペットをコピーします。

主な用途

  • 現在スナップされているカルーセル項目を完全な不透明度で強調表示し他を暗く表示します。
  • スティッキーヘッダーがビューポートの上部に固定されたときにのみ影を追加します。
  • スクロール可能なパネルをオーバーフローがある場合とすべてのコンテンツが収まる場合で異なるスタイルにします。

用途

使用例

アクティブなカルーセルインジケーター

カルーセルが製品カードを表示しています。scroll-state(snapped: true)を使用して現在スナップされているカードに完全な不透明度と境界線の強調表示を適用し他のカードは暗く表示します。JavaScriptのスクロールリスナーは不要です。

スティッキーヘッダーの影

ページにスティッキーヘッダーがあります。ヘッダーにscroll-state(stuck: true)を使用して固定されたときにbox-shadowを追加しユーザーがページの先頭を過ぎてスクロールしたことを示します。

よくあるミス

  • スクロールコンテナにcontainer-type: scroll-stateを設定せずにscroll-state()を使用しても効果はありません。
  • scroll-state()がすべてのブラウザで機能すると期待するのは誤りです。これはChrome 135以上の機能です。常にJSフォールバックを提供してください。
  • ターゲット状態に到達しない要素でscroll-stateクエリを使用すると要素がレイアウト内で実際にスナップ可能またはスティッキー可能かどうかを確認してください。

検証

  1. コンテナをスクロールしスタイル設定された要素が正しく更新されることを確認します。スナップされた項目はアクティブスタイルを表示しスナップされていない項目はデフォルトスタイルを表示する必要があります。
  2. JavaScriptフォールバックを無効にしてテストしCSSのみのアプローチがChrome 135以上で機能することを確認します。

FAQ

CSS Scroll-State Query GeneratorのFAQ

scroll-state()はどのような状態をサポートしていますか?

現在サポートされている状態:snapped(要素がアクティブなスクロールスナップターゲット)、stuck(スティッキー要素が境界に固定されている)、scrollable(コンテナにスクロール可能なオーバーフローがある)、overflowing(コンテンツがコンテナをオーバーフローしている)。これらの状態は@container scroll-state(...)ルール内でクエリされます。

scroll-state()はJavaScriptのスクロールイベントとどう違いますか?

スクロールステートクエリはメインのJavaScriptスレッドではなくコンポジッタースレッドで実行されます。より高性能でジャンクの原因になりません。JavaScriptのスクロールイベントはメインスレッドで発生しデバウンスしないとレイアウトスラッシングを引き起こす可能性があります。単純な視覚的な状態変更にはscroll-stateクエリの方が適しています。

関連ツール

その他のcssツール

こちらもお試しください

こちらもお試しください