Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that expects 3 subtest issues.
- This WPT test may be referenced by the following Test IDs:
- /css/css-values/inherit-function-invalidation.html - WPT Dashboard Interop Dashboard
<!DOCTYPE html>
<title>CSS Values: The inherit() function (invalidation)</title>
<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>