<html class="reftest-wait"> <title>Scroll timeline with Web Animation and transition from display:none to display:block</title> <link rel="help" href="https://drafts.csswg.org/scroll-animations/"> <meta name="assert" content="Scroll timeline should properly handle going from display:none to display:block"> <link rel="match" href="animation-ref.html"> <script src="/web-animations/testcommon.js"></script> <script src="/common/reftest-wait.js"></script> <style> #box { width: 100px; height: 100px; background-color: green; } #covered { width: 100px; height: 100px; background-color: red; } #scroller { overflow: auto; height: 100px; width: 100px; will-change: transform; /* force compositing */ } .removed { display: none; } #contents { height: 1000px; width: 100%; } </style> <div id="box"></div> <div id="covered"></div> <div id="scroller"> <div id="contents"><p>Scrolling Contents</p></div> </div> <script> const box = document.getElementById('box'); const effect = new KeyframeEffect(box, [ { transform: 'translateY(0)', opacity: 1 }, { transform: 'translateY(200px)', opacity: 0 } ], { duration: 1000, } ); const scroller = document.getElementById('scroller'); scroller.classList.add('removed'); const timeline = new ScrollTimeline( { source: scroller, orientation: 'block' }); const animation = new Animation(effect, timeline); animation.play(); waitForAnimationFrames(2).then(_ => { scroller.classList.remove('removed'); animation.ready.then(() => { const maxScroll = scroller.scrollHeight - scroller.clientHeight; scroller.scrollTop = 0.5 * maxScroll; waitForAnimationFrames(2).then(_ => { takeScreenshot(); }); }); }); </script>