Newly available 条件付きYES。Baseline Newly available。アニメーション付きCSS変数が必要な場面で使用推奨。フォールバック戦略を併用。

概要

@property でCSS変数を登録すると、構文(型)・初期値・継承の有無を明示的に指定できる。これにより、通常のCSS変数ではできない色やサイズのトランジション・アニメーションが可能になる。グラデーションのアニメーションなどに特に有効。

対応ブラウザ

デスクトップ

Chrome 85+
Edge 85+
Safari 16.4+
Firefox 128+

モバイル

Chrome Android 85+
Safari iOS 16.4+
Firefox Android 128+

基本構文

HTML
@property --gradient-angle {
  syntax: "<angle>";
  initial-value: 0deg;
  inherits: false;
}

.gradient-box {
  --gradient-angle: 0deg;
  background: linear-gradient(var(--gradient-angle), #3b82f6, #8b5cf6);
  transition: --gradient-angle 0.6s ease;
}

.gradient-box:hover {
  --gradient-angle: 180deg;
}

@property --progress {
  syntax: "<percentage>";
  initial-value: 0%;
  inherits: false;
}

.progress-bar {
  --progress: 0%;
  background: linear-gradient(90deg, #16a34a var(--progress), #e5e7eb var(--progress));
  transition: --progress 0.4s ease;
}

実務での使いどころ

  • グラデーションのアニメーション

    通常はアニメーション不可能なグラデーションの角度・色停止位置をスムーズにトランジション。

  • プログレスバーのアニメーション

    パーセント値をCSS変数で管理し、スムーズなアニメーション付きプログレスバーを実現。

注意点

  • Firefox 128 以降で対応。古い Firefox ではフォールバックが必要。
  • syntax に指定できる型が限られている(<color>、<length>、<angle>、<number> など)。

フォールバック戦略

CSS
/* フォールバック: 静的なグラデーション */
.gradient-box {
  background: linear-gradient(0deg, #3b82f6, #8b5cf6);
}

/* モダンブラウザ: アニメーション付き */
@supports (background: paint(id)) {
  @property --gradient-angle {
    syntax: "<angle>";
    initial-value: 0deg;
    inherits: false;
  }
}

アクセシビリティ

  • アニメーションは prefers-reduced-motion: reduce を尊重し、不要なモーションを無効化する。