<!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>