Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that expects 1 subtest issues.
 - This WPT test may be referenced by the following Test IDs:
            
- /css/css-transitions/after-change-style-inherited-try-fallback.html - WPT Dashboard Interop Dashboard
 
 
<!DOCTYPE html>
<title>CSS Transitions Test: trigger transitions on inherited after-change styles for anchored element using fallback</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
  body { margin: 0; }
  #outer, #inner {
    transition: 2s steps(2, start);
    transition-property: color, width;
  }
  #outer {
    anchor-name: --anchor;
    width: 100px;
    height: 100px;
    background-color: orange;
  }
  #inner.wide {
    width: 300px !important;
  }
  #inner {
    width: 100px;
    height: 100px;
    position: absolute;
    position-anchor: --anchor;
    position-area: left center;
    position-try-fallbacks: --fallback;
    background-color: teal;
  }
  @position-try --fallback {
    position-area: right center;
    width: 200px;
  }
  #outer { color: red; }
  #inner { color: black; }
  #outer.green { color: lime; }
  #outer.green #inner { color: unset; }
</style>
<div id="outer">
  <div>
    <div id="inner" class="wide"></div>
  </div>
</div>
<script>
  test(() => {
    outer.offsetTop;
    assert_equals(inner.offsetLeft, 100, "Initially using fallback position");
    assert_equals(inner.offsetWidth, 300, "Initially using important #inner.wide");
    assert_equals(getComputedStyle(inner).color, "rgb(0, 0, 0)", "#inner initially black");
    outer.className = "green";
    inner.className = "";
    assert_equals(inner.offsetLeft, 100, "Still using fallback position");
    assert_equals(inner.offsetWidth, 250, "Transitioning from !important width to fallback width");
    assert_equals(getComputedStyle(inner).color, "rgb(0, 128, 0)", "#inner halfway between black and lime");
  }, "Position fallback correctly applied to after-change style");
</script>