Firefox と古いブラウザのためのフォールバック戦略

@supports と CSS.supports() でアンカーポジショニングを機能検出し、Firefox 向けにグレースフルにデグレードする方法。

Tooling

詳細な説明

現実

2026年4月時点:

機能 Chrome Edge Safari Firefox
anchor-name 125+ 125+ 26+
position-anchor 125+ 125+ 26+
anchor() 関数 125+ 125+ 26+
position-area 125+ 125+ 26.1+
position-try-fallbacks 125+ 125+ 26+
@position-try 名前付き 128+ 128+

Firefox はグローバルトラフィックの約3%ですが、技術系・アクセシビリティ意識の高い・開発者層では多めに表れます — 無視してはいけません。

戦略 1:@supports によるプログレッシブエンハンスメント

アンカースタイルを @supports でラップし、合理的なデフォルトを用意します:

.tooltip {
  /* デフォルト:ラッパー相対の position: absolute */
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%);
}

@supports (anchor-name: --x) {
  .tooltip-trigger {
    anchor-name: --tt;
  }
  .tooltip {
    /* アンカーポジショニングで上書き */
    position-anchor: --tt;
    position-area: top;
    margin-bottom: 8px;
    /* ラッパー版デフォルトをリセット */
    bottom: auto;
    left: auto;
    transform: none;
  }
}

アンカーサポートのないブラウザはラッパーベースの配置を得ます(独自の制限あり — オーバーフロークリッピング、自動反転なし — が機能はします)。アンカーサポートのあるブラウザは良い体験を得ます。

戦略 2:JS 駆動の検出

ランタイム判定(例:ポリフィルをロードするか)には:

const supportsAnchor = CSS.supports('anchor-name', '--x');
const supportsPositionArea = CSS.supports('position-area', 'top');

if (!supportsAnchor) {
  // Oddbird ポリフィルをロード、または機能をスキップ
  import('@oddbird/css-anchor-positioning').then(({ default: polyfill }) => polyfill());
}

戦略 3:フォールバックレイヤーとしての Floating UI

すでにツールチップに Floating UI を使っているなら、当面はすべての場所で使い続ける — アンカーポジショニングは速いが、Floating UI はユニバーサル。コンポーネントを触るたびに段階的に移行してください。

フォールバックなしの選択肢

ブラウザを制御できる社内ツールや管理ダッシュボード(「Chrome のみ、最新版」)では、フォールバックを完全にスキップしてください。アンカーポジショニングのCSSを書くだけでサポート前提でOK。多くの社内ツールはこのプロファイルにフィットします。

「未対応」と「壊れている」を混同しない

アンカーポジショニング未対応の場合、ターゲット要素は依然としてレンダリングされます — デフォルト位置(通常は他のオフセットがない position: absolutetop: 0; left: 0)に配置されるだけです。消えはしません。ユーザーは見えるが配置がおかしいUI要素を得る、欠けたUI要素ではありません。重要でないアンカーUI(装飾的バッジ、ホバーヒント)にはこれが許容されることもあります。

ユースケース

アンカーポジショニングのロールアウト戦略を選ぶ本番チーム、ブラウザサポートを文書化するデザインシステムメンテナー、アクセシビリティ重視のプロジェクト、広いブラウザサポート要件を持つ政府・エンタープライズサイト。

試してみるCSS アンカーポジショニング ジェネレーター

フルツールを開く