| <!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> |