| <!DOCTYPE html> |
| <html> |
| <title>scrollIntoView() and scroll-margin applied to an inline element</title> |
| <link rel='author' title='Martin Robinson' href='http://igalia.com'> |
| <link rel='help' href='https://www.w3.org/TR/css-scroll-snap-1/#scroll-margin'> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| |
| <style type='text/css'> |
| .container { |
| border: solid black 1px; |
| height: 40px; |
| width: 40px; |
| overflow: auto; |
| } |
| </style> |
| |
| <div class="container"> |
| <div style="height: 1000px; width: 2000px;"></div> |
| <div style="width: 2000px;"> |
| <span>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</span> |
| <span id="target">TARGETTARGETTARGETTARGET</span> |
| <span>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</span> |
| </div> |
| <div style="height: 1000px; width: 2000px;"></div> |
| </div> |
| |
| <script> |
| |
| test(() => { |
| target.scrollIntoView(); |
| const scroller = target.parentElement.parentElement; |
| let expectedScrollPosition = [scroller.scrollLeft - 20, scroller.scrollTop - 20]; |
| scroller.scrollTo(0, 0); |
| |
| target.style.scrollMarginTop = "20px"; |
| target.style.scrollMarginLeft = "20px"; |
| target.scrollIntoView(); |
| assert_equals(scroller.scrollLeft, expectedScrollPosition[0]); |
| assert_equals(scroller.scrollTop, expectedScrollPosition[1]); |
| |
| target.style.scrollMarginTop = "0px"; |
| target.style.scrollMarginLeft = "0px"; |
| |
| scroller.scrollTo(2000, 2000); |
| target.scrollIntoView({"block": "end", "inline": "end"}); |
| expectedScrollPosition = [scroller.scrollLeft + 20, scroller.scrollTop + 20]; |
| scroller.scrollTo(2000, 2000); |
| |
| target.style.scrollMarginBottom = "20px"; |
| target.style.scrollMarginRight = "20px"; |
| target.scrollIntoView({"block": "end", "inline": "end"}); |
| assert_equals(scroller.scrollLeft, expectedScrollPosition[0]); |
| assert_equals(scroller.scrollTop, expectedScrollPosition[1]); |
| |
| }, "scroll-margin is taken into account when scrolling an inline element into view"); |
| </script> |