≪ Today I learned. RSS購読
公開日
タグ
CSS
著者
ダーシノ(@bc_rikko)

@propertyを使ったCSS変数の制限

@propertyは、CSS Houdiniの一種で、Custom Propertyに制約を追加するための機能。

CSSから使う

@property --color {
  syntax: '<color>';
  /* 子孫要素に影響を与えない。--color を変更した要素のみに適用される */
  inherits: false;
  initial-value: black;
}

@property --bg-color {
  syntax: '<color>';
  /* 子孫要素に影響がある。--bg-color を変更した要素の子孫要素すべてに適用される */
  inherits: true;
  initial-value: yellow;
}

p {
  color: var(--color);
  background-color: var(--bg-color);
}
<p>Outside</p>

<section style="--color: red; --bg-color: skyblue;">
  <!-- --color は inherits: false なので子孫要素には影響しない -->
  <!-- --bg-color は inherits: true なので子孫要素に影響する -->
  <p>Inside</p>
  <p style="--color: red;">inherites:falseでも自身の要素なら色が変わる</p>
</section>

JavaScriptから使う

window.CSS.registerProperty({
  name: '--color',
  syntax: '<color>',
  inherits: false,
  initialValue: 'black',
});

デモ

Outside

Inside

inherites:falseでも自身の要素なら色が変わる