Status: FAIL | Duration: 11ms | Subtests: 0/1 | Open test on wpt.live | Open ref on wpt.live | wpt.fyi
/css/css-anchor-position/position-visibility-no-overflow-scroll-002.html
<!DOCTYPE html> <html class="reftest-wait"> <title>CSS Anchor Positioning Test: position-visibility: no-overflow + scrolling + position-area</title> <link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#position-visibility"> <link rel="match" href="position-visibility-no-overflow-scroll-ref.html"> <style> #container { position: relative; width: 400px; height: 150px; overflow: hidden; } #scroll-container { overflow: hidden scroll; scrollbar-width: none; width: 100%; height: 100%; } .anchor { width: 100px; height: 100px; background: orange; display: inline-block; } .target { position: absolute; position-visibility: no-overflow; width: 100px; height: 100px; } .display-none { display: none; } </style> <div id="container"> <div id="scroll-container"> <div class="anchor" style="anchor-name: --a1;">anchor1</div> <div class="anchor" style="anchor-name: --a2; position: relative; top: 100px">anchor2</div> <div id="target1" class="target display-none" style="position-anchor: --a1; position-area: bottom; background: green">target1</div> <div id="target2" class="target display-none" style="position-anchor: --a2; position-area: top; background: red">target2</div> <div style="height: 300px"></div> </div> </div> <script> requestAnimationFrame(() => { requestAnimationFrame(() => { document.getElementById('scroll-container').scrollTop = 50; // Force position-area grid computation after the scroll. // Initial scroll position causes position area grid for #target1 to have // not enough height, as it is bounded by the absolute containing block [1]. // This causes #target1 to overflow the position area grid applied containing // block, which would cause it to shift up [2], overlapping anchor1. // [1]: https://drafts.csswg.org/css-anchor-position-1/#position-area-grid-resolution // [2]: https://drafts.csswg.org/css-anchor-position-1/#position-area-alignment target1.classList.remove('display-none'); target2.classList.remove('display-none'); document.documentElement.classList.remove('reftest-wait'); }); }); </script> </html>
/css/css-anchor-position/position-visibility-no-overflow-scroll-ref.html
<!DOCTYPE html> <style> #scroll-container { overflow: hidden scroll; scrollbar-width: none; width: 400px; height: 150px; } .anchor { width: 100px; height: 100px; background: orange; display: inline-block; } .target { width: 100px; height: 100px; } </style> <div id="scroll-container"> <div class="anchor">anchor1</div> <div class="anchor" style="position: relative; top: 100px">anchor2</div> <div id="target1" class="target" style="background: green">target1</div> <div style="height: 200px"></div> </div> <script> document.getElementById('scroll-container').scrollTop = 50; </script>