| <style> |
| body { |
| margin: 0; |
| } |
| |
| .scroller { |
| will-change: transform; |
| |
| overflow: auto; |
| width: 200px; |
| height: 500px; |
| outline: 2px solid black; |
| } |
| |
| .container { |
| width: 200px; |
| height: 1000px; |
| } |
| |
| .sticky { |
| will-change: transform; |
| |
| position: sticky; |
| width: 200px; |
| top: 0; |
| } |
| |
| .first { |
| height: 500px; |
| background: red; |
| } |
| |
| .second { |
| height: 400px; |
| background: green; |
| } |
| |
| .third { |
| height: 300px; |
| background: blue; |
| top: 100px; |
| } |
| |
| .fourth { |
| height: 200px; |
| background: pink; |
| top: 100px; |
| } |
| |
| .fifth { |
| height: 100px; |
| background: yellow; |
| } |
| </style> |
| |
| <script> |
| if (window.testRunner) |
| testRunner.waitUntilDone(); |
| |
| function finishTest() { |
| document.querySelector('.scroller').scrollTop = 400; |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| } |
| |
| window.addEventListener('load', function() { |
| requestAnimationFrame(function() { |
| requestAnimationFrame(finishTest); |
| }); |
| }); |
| </script> |
| |
| <div class="scroller"> |
| <div class="container"> |
| <div class="first sticky"> |
| <div class="second sticky"> |
| <div class="third sticky"> |
| <div class="fourth sticky"> |
| <div class="fifth sticky"></div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |