| <!DOCTYPE html> | |
| <head> | |
| <title>CSS Custom Properties: Using CSS-wide keywords</title> | |
| <link rel="help" href="https://drafts.csswg.org/css-variables/#defining-variables"> | |
| <meta name="assert" content="The CSS-wide keywords can be used in custom properties, with the same meaning as in any another property." /> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <style> | |
| body { | |
| --is-initial: initial; | |
| --should-not-inherit: tomato; | |
| --should-inherit: lightgreen; | |
| --registered-inherits-should-not-inherit: tomato; | |
| --registered-should-not-inherit: tomato; | |
| --registered-inherits-should-inherit: lightgreen; | |
| --registered-should-inherit: lightgreen; | |
| --registered-should-revert: tomato; | |
| --registered-inherits-should-revert: tomato; | |
| } | |
| @property --registered-inherits-should-not-inherit { | |
| syntax: '<color>'; | |
| initial-value: lightgreen; | |
| inherits: true; | |
| } | |
| @property --registered-should-not-inherit { | |
| syntax: '<color>'; | |
| initial-value: lightgreen; | |
| inherits: false; | |
| } | |
| @property --registered-inherits-should-inherit { | |
| syntax: '<color>'; | |
| initial-value: tomato; | |
| inherits: true; | |
| } | |
| @property --registered-should-inherit { | |
| syntax: '<color>'; | |
| initial-value: tomato; | |
| inherits: false; | |
| } | |
| @property --registered-should-revert { | |
| syntax: '<color>'; | |
| initial-value: orange; | |
| inherits: false; | |
| } | |
| @property --registered-inherits-should-revert { | |
| syntax: '<color>'; | |
| initial-value: orange; | |
| inherits: true; | |
| } | |
| </style> | |
| <!-- Tests for values of unregistered custom properties --> | |
| <div class="test" style=" | |
| background: var(--should-not-inherit, lightgreen); | |
| --should-not-inherit: initial; | |
| "> | |
| `initial` as a value for an unregistered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--should-inherit, tomato); | |
| --should-inherit: inherit; | |
| "> | |
| `inherit` as a value for an unregistered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--should-inherit, tomato); | |
| --should-inherit: unset; | |
| "> | |
| `unset` as a value for an unregistered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--should-inherit, tomato); | |
| --should-inherit: revert; | |
| "> | |
| `revert` as a value for an unregistered custom property | |
| </div> | |
| <style> | |
| #regular-revert-layer { | |
| @layer { | |
| --should-not-inherit: lightgreen; | |
| } | |
| @layer { | |
| --should-not-inherit: revert-layer; | |
| } | |
| } | |
| </style> | |
| <div class="test" id="regular-revert-layer" style=" | |
| background: var(--should-not-inherit); | |
| "> | |
| `revert-layer` as a value for an unregistered custom property | |
| </div> | |
| <!-- Tests for values of registered custom properties --> | |
| <div class="test" style=" | |
| background: var(--registered-should-not-inherit); | |
| --registered-should-not-inherit: initial; | |
| "> | |
| `initial` as a value for a non-inheriting registered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--registered-inherits-should-not-inherit); | |
| --registered-inherits-should-not-inherit: initial; | |
| "> | |
| `initial` as a value for an inheriting registered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--registered-should-inherit); | |
| --registered-should-inherit: inherit; | |
| "> | |
| `inherit` as a value for a non-inheriting registered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--registered-inherits-should-inherit); | |
| --registered-inherits-should-inherit: inherit; | |
| "> | |
| `inherit` as a value for an inheriting registered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--registered-should-not-inherit); | |
| --registered-should-not-inherit: unset; | |
| "> | |
| `unset` as a value for a non-inheriting registered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--registered-inherits-should-inherit); | |
| --registered-inherits-should-inherit: unset; | |
| "> | |
| `unset` as a value for an inheriting registered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--registered-should-not-inherit); | |
| --registered-should-not-inherit: revert; | |
| "> | |
| `revert` as a value for a non-inheriting registered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--registered-inherits-should-inherit); | |
| --registered-inherits-should-inherit: revert; | |
| "> | |
| `revert` as a value for an inheriting registered custom property | |
| </div> | |
| <style> | |
| #registered-revert-layer { | |
| @layer { | |
| --registered-should-revert: lightgreen; | |
| } | |
| @layer { | |
| --registered-should-revert: revert-layer; | |
| } | |
| } | |
| </style> | |
| <div class="test" id="registered-revert-layer" style=" | |
| background: var(--registered-should-revert); | |
| "> | |
| `revert-layer` as a value for a non-inheriting registered custom property | |
| </div> | |
| <style> | |
| #registered-revert-layer-inherits { | |
| @layer { | |
| --registered-inherits-should-revert: lightgreen; | |
| } | |
| @layer { | |
| --registered-inherits-should-revert: revert-layer; | |
| } | |
| } | |
| </style> | |
| <div class="test" id="registered-revert-layer-inherits" style=" | |
| background: var(--registered-inherits-should-revert); | |
| "> | |
| `revert-layer` as a value for an inheriting registered custom property | |
| </div> | |
| <!-- Tests for `var()` fallbacks of unregistered custom properties --> | |
| <div class="test" style=" | |
| background: var(--should-not-inherit, lightgreen); | |
| --should-not-inherit: var(--is-initial, initial); | |
| "> | |
| `initial` as a `var()` fallback for an unregistered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--should-inherit, tomato); | |
| --should-inherit: var(--is-initial, inherit); | |
| "> | |
| `inherit` as a `var()` fallback for an unregistered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--should-inherit, tomato); | |
| --should-inherit: var(--is-initial, unset); | |
| "> | |
| `unset` as a `var()` fallback for an unregistered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--should-inherit, tomato); | |
| --should-inherit: var(--is-initial, unset); | |
| "> | |
| `revert` as a `var()` fallback for an unregistered custom property | |
| </div> | |
| <style> | |
| #regular-fallback-revert-layer { | |
| @layer { | |
| --should-not-inherit: lightgreen; | |
| } | |
| @layer { | |
| --should-not-inherit: var(--is-initial, revert-layer); | |
| } | |
| } | |
| </style> | |
| <div class="test" id="regular-fallback-revert-layer" style=" | |
| background: var(--should-not-inherit); | |
| "> | |
| `revert-layer` as a `var()` fallback for an unregistered custom property | |
| </div> | |
| <!-- Tests for `var()` fallbacks of registered custom properties --> | |
| <div class="test" style=" | |
| background: var(--registered-should-not-inherit); | |
| --registered-should-not-inherit: var(--is-initial, initial); | |
| "> | |
| `initial` as a `var()` fallback for a non-inheriting registered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--registered-inherits-should-not-inherit); | |
| --registered-inherits-should-not-inherit: var(--is-initial, initial); | |
| "> | |
| `initial` as a `var()` fallback for an inheriting registered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--registered-should-inherit); | |
| --registered-should-inherit: var(--is-initial, inherit); | |
| "> | |
| `inherit` as a `var()` fallback for a non-inheriting registered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--registered-inherits-should-inherit); | |
| --registered-inherits-should-inherit: var(--is-initial, inherit); | |
| "> | |
| `inherit` as a `var()` fallback for an inheriting registered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--registered-should-not-inherit); | |
| --registered-should-not-inherit: var(--is-initial, unset); | |
| "> | |
| `unset` as a `var()` fallback for a non-inheriting registered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--registered-inherits-should-inherit); | |
| --registered-inherits-should-inherit: var(--is-initial, unset); | |
| "> | |
| `unset` as a `var()` fallback for an inheriting registered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--registered-should-not-inherit); | |
| --registered-should-not-inherit: var(--is-initial, revert); | |
| "> | |
| `revert` as a `var()` fallback for a non-inheriting registered custom property | |
| </div> | |
| <div class="test" style=" | |
| background: var(--registered-inherits-should-inherit); | |
| --registered-inherits-should-inherit: var(--is-initial, revert); | |
| "> | |
| `revert` as a `var()` fallback for an inheriting registered custom property | |
| </div> | |
| <style> | |
| #registered-fallback-revert-layer { | |
| @layer { | |
| --registered-should-revert: lightgreen; | |
| } | |
| @layer { | |
| --registered-should-revert: var(--is-initial, revert-layer); | |
| } | |
| } | |
| </style> | |
| <div class="test" id="registered-fallback-revert-layer" style=" | |
| background: var(--registered-should-revert); | |
| "> | |
| `revert-layer` as a `var()` fallback for a non-inheriting registered custom property | |
| </div> | |
| <style> | |
| #registered-fallback-revert-layer-inherits { | |
| @layer { | |
| --registered-inherits-should-revert: lightgreen; | |
| } | |
| @layer { | |
| --registered-inherits-should-revert: var(--is-initial, revert-layer); | |
| } | |
| } | |
| </style> | |
| <div class="test" id="registered-fallback-revert-layer-inherits" style=" | |
| background: var(--registered-inherits-should-revert); | |
| "> | |
| `revert-layer` as a `var()` fallback for an inheriting registered custom property | |
| </div> | |
| <pre id="out"></pre> | |
| <script> | |
| [...document.querySelectorAll('.test')].map(el => test(() => assert_equals(getComputedStyle(el).getPropertyValue('background-color'), 'rgb(144, 238, 144)'), el.textContent.trim())); | |
| </script> |