| <!DOCTYPE html> |
| <link rel="help" href="https://www.w3.org/TR/intersection-observer/#intersection-observer-interface"> |
| <script src="../resources/testharness.js"></script> |
| <script src="../resources/testharnessreport.js"></script> |
| <style> |
| #target { |
| position: absolute; |
| height: 40px; |
| width: 100px; |
| top: -40px; |
| background-color: green; |
| } |
| </style> |
| |
| |
| <div id="target"></div> |
| |
| <script> |
| // The target is positioned 40 px above the viewport so should fully intersect |
| // when the viewport is expanded by a root margin of 40 px, no matter what |
| // page zoom factor is used, since page zoom should equally affect both the |
| // positioning of the target and the size of the root margin. |
| window.internals.setPageZoomFactor(2); |
| async_test((t) => { |
| let options = { |
| rootMargin: '40px 0px 0px 0px', |
| threshold: [1] |
| } |
| let observer = new IntersectionObserver(t.step_func_done((entries) => { |
| assert_true(entries[0].isIntersecting, "isIntersecting"); |
| }), options); |
| observer.observe(document.getElementById("target")); |
| }, "IntersectionObserver's root margin accounts for zooming"); |
| </script> |