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

    @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でも自身の要素なら色が変わる