scroll-marker-scroll-container.html (2439B)
1 <!doctype html> 2 <meta charset="utf-8"> 3 <title>CSS Test: ::scroll-marker on scroll container</title> 4 <link rel="help" href="https://drafts.csswg.org/css-overflow-5/#scroll-marker-activation"> 5 <script src="/dom/events/scrolling/scroll_support.js"></script> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="/resources/testdriver.js"></script> 9 <script src="/resources/testdriver-actions.js"></script> 10 <script src="/resources/testdriver-vendor.js"></script> 11 <style> 12 body { 13 margin: 0; 14 } 15 16 #marker-scroller { 17 border: 2px solid gray; 18 width: 600px; 19 height: 300px; 20 overflow: auto; 21 scroll-snap-type: x mandatory; 22 position: relative; 23 scroll-marker-group: before; 24 white-space: nowrap; 25 } 26 27 #marker-scroller > div { 28 scroll-snap-align: start; 29 box-sizing: border-box; 30 border-radius: 5px; 31 background: lightgray; 32 border: 1px solid black; 33 display: inline-block; 34 width: 500px; 35 height: 100%; 36 scroll-padding: 16px; 37 overflow: auto; 38 } 39 40 .content { 41 height: 1000px; 42 } 43 44 #marker-scroller::scroll-marker-group { 45 display: flex; 46 height: 100px; 47 } 48 49 #marker-scroller > div::scroll-marker { 50 content: ""; 51 width: 100px; 52 height: 100px; 53 box-sizing: border-box; 54 border-radius: 5px; 55 border: 1px solid black; 56 display: inline-block; 57 } 58 #marker-scroller > div::scroll-marker:target-current { 59 background: blue; 60 } 61 </style> 62 <div id="marker-scroller"> 63 <div><div class="content">1</div></div> 64 <div id="target"><div class="content">2</div></div> 65 <div><div class="content">3</div></div> 66 </div> 67 <script> 68 promise_test(async t => { 69 const target = document.querySelector('#target'); 70 const scroller = document.querySelector('#marker-scroller'); 71 const innerScroller = document.querySelector('#target'); 72 innerScroller.scrollTop = 100; 73 const scrollEndPromise = waitForScrollEndFallbackToDelayWithoutScrollEvent(scroller); 74 actions_promise = new test_driver.Actions() 75 .pointerMove(150, 50) 76 .pointerDown() 77 .pointerUp() 78 .send(); 79 await actions_promise; 80 await scrollEndPromise; 81 assert_equals(scroller.scrollLeft, target.offsetLeft, "::scroll-marker activation scrolls to target"); 82 assert_equals(innerScroller.scrollTop, 100, "::scroll-marker activation doesn't scroll marker's inner scroll container"); 83 }); 84 </script>