| <!DOCTYPE html> | |
| <title>CSS Values: The inherit() function (invalidation)</title> | |
| <link rel="help" href="https://drafts.csswg.org/css-values-5/#inherit-notation"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <main id=main> | |
| </main> | |
| <template id=parent_change_unregistered> | |
| <style> | |
| #outer { | |
| --z: 2; | |
| } | |
| #target { | |
| z-index: inherit(--z); | |
| } | |
| </style> | |
| <div id=outer> | |
| <div id=target> | |
| </div> | |
| </div> | |
| </template> | |
| <script> | |
| test((t) => { | |
| main.append(parent_change_unregistered.content.cloneNode(true)); | |
| t.add_cleanup(() => { main.replaceChildren(); }); | |
| assert_equals(getComputedStyle(target).zIndex, '2'); | |
| assert_equals(getComputedStyle(target).getPropertyValue('--z'), '2'); | |
| outer.style.setProperty('--z', '4'); | |
| assert_equals(getComputedStyle(target).zIndex, '4'); | |
| assert_equals(getComputedStyle(target).getPropertyValue('--z'), '4'); | |
| }, 'inherit() invalidates when values changes on parent element, inherited'); | |
| </script> | |
| <!-- Like the previous test, but #target is buried deeper. --> | |
| <template id=parent_change_unregistered_deep> | |
| <style> | |
| #outer { | |
| --z: 2; | |
| } | |
| #target { | |
| z-index: inherit(--z, 7); | |
| } | |
| </style> | |
| <div id=outer> | |
| <div> | |
| <div> | |
| <div> | |
| <div id=target></div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </template> | |
| <script> | |
| test((t) => { | |
| main.append(parent_change_unregistered_deep.content.cloneNode(true)); | |
| t.add_cleanup(() => { main.replaceChildren(); }); | |
| assert_equals(getComputedStyle(target).zIndex, '2'); | |
| outer.style.setProperty('--z', '4'); | |
| assert_equals(getComputedStyle(target).zIndex, '4'); | |
| }, 'inherit() invalidates when values changes on parent element, inherited, deeper'); | |
| </script> | |
| <template id=parent_change_registered> | |
| <style> | |
| @property --z { | |
| syntax: "<integer>"; | |
| inherits: false; | |
| initial-value: 0; | |
| } | |
| #outer { | |
| --z: 2; | |
| } | |
| #target { | |
| z-index: inherit(--z, 7); | |
| } | |
| </style> | |
| <div id=outer> | |
| <div id=target> | |
| </div> | |
| </div> | |
| </template> | |
| <script> | |
| test((t) => { | |
| main.append(parent_change_registered.content.cloneNode(true)); | |
| t.add_cleanup(() => { main.replaceChildren(); }); | |
| assert_equals(getComputedStyle(target).zIndex, '2'); | |
| assert_equals(getComputedStyle(target).getPropertyValue('--z'), '0'); | |
| outer.style.setProperty('--z', '4'); | |
| assert_equals(getComputedStyle(target).zIndex, '4'); | |
| assert_equals(getComputedStyle(target).getPropertyValue('--z'), '0'); | |
| }, 'inherit() invalidates when values changes on parent element, non-inherited'); | |
| </script> |