| <!DOCTYPE HTML> |
| <title>scrollIntoView on an SVG shape element</title> |
| <link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <svg width="8000" height="8000"> |
| <rect width="100" height="100" fill="blue" y="1950" id="geometry"/> |
| <rect width="100" height="100" fill="blue" transform="translate(0, 2950)" |
| id="translated"/> |
| <rect width="100" height="100" fill="blue" transform="rotate(45, 50, 3950)" |
| id="rotated"/> |
| </svg> |
| <script> |
| add_completion_callback(() => { |
| document.querySelector("svg").remove(); |
| window.scrollTo(0, 0); |
| }); |
| |
| for (let id of [ "geometry", "translated", "rotated" ]) { |
| test(t => { |
| let target = document.getElementById(id); |
| window.scrollTo(0, 0); |
| let bounds = target.getBoundingClientRect(); |
| let expected = { x: bounds.left, y: bounds.top }; |
| assert_not_equals(window.scrollX, expected.x, "x before scroll"); |
| assert_not_equals(window.scrollY, expected.y, "y before scroll"); |
| target.scrollIntoView({ block: "start", inline: "start" }); |
| assert_approx_equals(window.scrollX, expected.x, 1, "x after scroll"); |
| assert_approx_equals(window.scrollY, expected.y, 1, "y after scroll"); |
| }, document.title + ", " + id); |
| } |
| </script> |