| <!DOCTYPE html> |
| <html> |
| |
| <head> |
| <meta charset="utf-8"> |
| <title> CSS Scroll Snap 2 Test: scroll-start-*</title> |
| <link rel="help" href="https://drafts.csswg.org/css-scroll-snap-2/#scroll-start"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| </head> |
| |
| <body> |
| <style> |
| .spacer { |
| width: 500px; |
| height: 500px; |
| border: solid 1px green; |
| } |
| |
| .scroller { |
| width: 100px; |
| height: 100px; |
| border: solid 1px black; |
| overflow: scroll; |
| } |
| </style> |
| <div id="lengthscroller" class="scroller" style="scroll-start: 100px"> |
| <div class="spacer"></div> |
| </div> |
| <div id="percentscroller" class="scroller" style="scroll-start: 25%"> |
| <div class="spacer"></div> |
| </div> |
| <div id="calcscroller" class="scroller" style="scroll-start: calc(50px)"> |
| <div class="spacer"></div> |
| </div> |
| <div id="startscroller" class="scroller" style="scroll-start: start"> |
| <div class="spacer"></div> |
| </div> |
| <div id="centerscroller" class="scroller" style="scroll-start: center"> |
| <div class="spacer"></div> |
| </div> |
| <div id="endscroller" class="scroller" style="scroll-start: end"> |
| <div class="spacer"></div> |
| </div> |
| <div id="topscroller" class="scroller" style="scroll-start: top"> |
| <div class="spacer"></div> |
| </div> |
| <div id="bottomscroller" class="scroller" style="scroll-start: bottom"> |
| <div class="spacer"></div> |
| </div> |
| <div id="leftscroller" class="scroller" style="scroll-start: auto left"> |
| <div class="spacer"></div> |
| </div> |
| <div id="rightscroller" class="scroller" style="scroll-start: auto right"> |
| <div class="spacer"></div> |
| </div> |
| <div id="clampedscroller" class="scroller" style="scroll-start: 1000px 1000px"> |
| <div class="spacer"></div> |
| </div> |
| <script>promise_test(async (t) => { |
| let length_scroller = document.getElementById("lengthscroller"); |
| assert_equals(length_scroller.scrollTop, 100, |
| "scroll-start: <length> sets initial scroll position"); |
| |
| let percent_scroller = document.getElementById("percentscroller"); |
| const percent_scroll_top = 0.25 * (percent_scroller.scrollHeight - |
| percent_scroller.clientHeight); |
| assert_approx_equals(percent_scroller.scrollTop, percent_scroll_top, 1, |
| "scroll-start: <percent> sets initial scroll position"); |
| |
| let calc_scroller = document.getElementById("calcscroller"); |
| assert_equals(calc_scroller.scrollTop, 50, |
| "scroll-start: <calc> sets initial scroll position"); |
| |
| let start_scroller = document.getElementById("startscroller"); |
| assert_equals(start_scroller.scrollTop, 0, |
| "scroll-start: start sets initial scroll position"); |
| |
| let center_scroller = document.getElementById("centerscroller"); |
| const center_scroll_top = 0.5 * (center_scroller.scrollHeight - |
| center_scroller.clientHeight); |
| assert_approx_equals(center_scroller.scrollTop, center_scroll_top, 1, |
| "scroll-start: center sets initial scroll position"); |
| |
| let end_scroller = document.getElementById("endscroller"); |
| const end_scroll_top = end_scroller.scrollHeight - |
| end_scroller.clientHeight; |
| assert_equals(end_scroller.scrollTop, end_scroll_top, |
| "scroll-start: end sets initial scroll position"); |
| |
| let top_scroller = document.getElementById("topscroller"); |
| assert_equals(top_scroller.scrollTop, 0, |
| "scroll-start: top sets initial scroll position"); |
| |
| let bottom_scroller = document.getElementById("bottomscroller"); |
| const bottom_scroll_top = bottom_scroller.scrollHeight - |
| bottom_scroller.clientHeight; |
| assert_equals(bottom_scroller.scrollTop, bottom_scroll_top, |
| "scroll-start: bottom sets initial scroll position"); |
| |
| let left_scroller = document.getElementById("leftscroller"); |
| assert_equals(left_scroller.scrollLeft, 0, |
| "scroll-start: left sets initial scroll position"); |
| |
| let right_scroller = document.getElementById("rightscroller"); |
| const right_scroll_top = right_scroller.scrollWidth - |
| right_scroller.clientWidth; |
| assert_equals(right_scroller.scrollLeft, right_scroll_top, |
| "scroll-start: right sets initial scroll position"); |
| |
| let clamped_scroller = document.getElementById("clampedscroller"); |
| const clamped_scroll_top = clamped_scroller.scrollHeight - |
| clamped_scroller.clientHeight; |
| const clamped_scroll_left = clamped_scroller.scrollWidth - |
| clamped_scroller.clientWidth; |
| assert_equals(clamped_scroller.scrollTop, clamped_scroll_top, |
| "scroll-start is clamped to max vertical scroll offset"); |
| assert_equals(clamped_scroller.scrollLeft, clamped_scroll_left, |
| "scroll-start is clamped to max horizontal scroll offset"); |
| }); |
| </script> |
| </body> |