| <!DOCTYPE html> |
| <title>anchor-name is a tree scoped reference</title> |
| <link rel="help" href="https://drafts.csswg.org/css-anchor-1/#target-anchor-element"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <style> |
| body { margin-top: 0; } |
| #anchor { |
| anchor-name: --anchor; |
| } |
| #filler { |
| height: 100px; |
| } |
| #anchored { |
| position: absolute; |
| top: anchor(--anchor top); |
| } |
| </style> |
| <div id="host"></div> |
| <div id="filler"></div> |
| <div id="anchor"></div> |
| <div id="anchored"></div> |
| <script> |
| const host_root = host.attachShadow({mode:"open"}); |
| host_root.innerHTML = ` |
| <style> |
| div { anchor-name: --anchor; } |
| </style> |
| <div></div> |
| `; |
| |
| test(() => { |
| assert_equals(anchored.offsetTop, 100, "#anchored is positioned against #anchor"); |
| }, "anchor-name should not leak out of a shadow tree"); |
| </script> |
| |
| <div id="anchor_host" style="anchor-name: --anchor-host"></div> |
| <script> |
| const anchor_host_root = anchor_host.attachShadow({mode:"open"}); |
| anchor_host_root.innerHTML = ` |
| <style> |
| div { |
| position: absolute; |
| left: anchor(--anchor-host left, 37px); |
| } |
| </style> |
| <div id="anchored"></div> |
| `; |
| |
| test(() => { |
| assert_equals(anchor_host_root.querySelector("#anchored").offsetLeft, 37, "#anchored is positioned using fallback"); |
| }, "anchor() in shadow tree should not match host anchor-name"); |
| </script> |