CSS @property を試してみる
目次
はじめに
CSSのアットルールである @property
を試してみた。
CSS のアットルールとは
MDNでは
CSS の動作を既定するもの
と説明されている。
よく使うものだと次のものもアットルールに属する。
@media {...}
@supports {...}
@keyframes {...}
@property
の概要
CSSカスタムプロパティ(変数)の
- プロパティ型のチェック
- 既定値の設定
- プロパティが値を継承するかどうか
の定義ができる。
使い方の簡単なデモは次の通り。
:root {
--example-color: #c0ffee;
}
@property --example-color {
syntax: '<color>';
inherits: false;
initial-value: #c0ffee;
}
.hoge {
color: var(--example-color);
}
ブラウザ対応状況
2024年7月9日にFireFox 128にてサポートされ、各モダンブラウザ最新版でサポートされたばかりの状況。
https://caniuse.com/mdn-css_at-rules_property
使い方の例
@property --example-color {
syntax: '<color>';
inherits: false;
initial-value: #c0ffee;
}
syntax:
プロパティに許容される構文を記述する。
<length>
, <number>
, <percentage>
, <color>
, <integer>
, <angle>
…
+
(スペース区切り)や #
(カンマ区切り)で値のリストも定義できる。
inherits:
子要素で継承するかどうかを制御する。
true
or false
initial-value:
プロパティの初期値を設定する。
デモ:https://yuheijotaki.com/demo/@property/
さいごに
グラデーションのアニメーションが簡単にできる、というよりカスタムプロパティの値に型を定義でき、その型を含めた定義をCSSが読み取ってくれるようになるのが @property
を利用する理由という解釈になった。
またCSSのデータ型についてはあまり意識してこなかったが、意識できると(知識が増えると)うまく動かないときの理由などが根拠を持って言える気がしてくる。
参考にした記事や関連資料
- MDN、web.dev
- 記事
- こんなこともできる
#c0ffee
について