| <!DOCTYPE html> |
| <title>CSS Anchor Positioning: The ident() function </title> |
| <link rel="help" href="https://drafts.csswg.org/css-values-5/#ident"> |
| <link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/css/support/computed-testcommon.js"></script> |
| <style> |
| #cb { |
| border: 1px solid black; |
| width: 100px; |
| height: 100px; |
| position: relative; |
| } |
| .anchor { |
| width: 15px; |
| height: 15px; |
| background-color: skyblue; |
| position: absolute; |
| top: 30px; |
| } |
| /* sibling-index() could make this nicer, but it's not universally |
| supported at the time of writing: */ |
| .anchor:nth-child(1) { anchor-name: --a1; left: calc(20px * 1); } |
| .anchor:nth-child(2) { anchor-name: --a2; left: calc(20px * 2); } |
| .anchor:nth-child(3) { anchor-name: --a3; left: calc(20px * 3); } |
| #target { |
| width: 15px; |
| height: 15px; |
| background-color: tomato; |
| position: absolute; |
| position-anchor: --a1; |
| } |
| </style> |
| <div id=cb> |
| <div> |
| <div class=anchor></div> |
| <div class=anchor></div> |
| <div class=anchor></div> |
| </div> |
| <div id=target></div> |
| </div> |
| |
| <script> |
| // Test the computed values of various anchor related properties: |
| |
| let actual_ident = 'ident("--myident" calc(42 * sign(1em - 1px)))'; |
| let expected_ident = '--myident42'; |
| |
| // https://drafts.csswg.org/css-anchor-position-1/#name |
| test_computed_value('anchor-name', actual_ident, expected_ident); |
| test_computed_value('anchor-name', `--tl, ${actual_ident}`, |
| `--tl, ${expected_ident}`); |
| test_computed_value('anchor-name', `${actual_ident}, ${actual_ident}`, |
| `${expected_ident}, ${expected_ident}`); |
| |
| // https://drafts.csswg.org/css-anchor-position-1/#anchor-scope |
| test_computed_value('anchor-scope', actual_ident, expected_ident); |
| test_computed_value('anchor-scope', `--tl, ${actual_ident}`, |
| `--tl, ${expected_ident}`); |
| test_computed_value('anchor-scope', `${actual_ident}, ${actual_ident}`, |
| `${expected_ident}, ${expected_ident}`); |
| |
| // https://drafts.csswg.org/css-anchor-position-1/#position-anchor |
| test_computed_value('position-anchor', actual_ident, expected_ident); |
| |
| // Test ident() usage within anchor functions: |
| test_computed_value('left', 'anchor(--a1 left)', '20px'); |
| test_computed_value('left', 'anchor(--a2 left)', '40px'); |
| test_computed_value('left', 'anchor(--a3 left)', '60px'); |
| test_computed_value('left', 'calc(anchor(--a1 left)*4)', '80px'); |
| test_computed_value('width', 'calc(anchor-size(--a1)*2)', '30px'); |
| test_computed_value('width', 'anchor-size(--a1)', '15px'); |
| </script> |