| <!DOCTYPE html> | |
| <title>CSS Values and Units Test: sibling-index() and sibling-count() changes in container queries</title> | |
| <link rel="help" href="https://drafts.csswg.org/css-values-5/#tree-counting"> | |
| <link rel="help" href="https://drafts.csswg.org/css-conditional-5/#container-features"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <style> | |
| @property --length { | |
| syntax: "<length>"; | |
| initial-value: 0px; | |
| inherits: false; | |
| } | |
| .container { container-type: inline-size; } | |
| #c1 { | |
| width: 100px; | |
| --length: 100px; | |
| } | |
| #c2 { | |
| width: 400px; | |
| --length: 600px; | |
| } | |
| span { | |
| --match-100: no; | |
| --match-600: no; | |
| } | |
| @container (width = calc(100px * sibling-index())) { | |
| span { background-color: green; } | |
| } | |
| @container (width = calc(200px * sibling-count())) { | |
| span { color: lime; } | |
| } | |
| @container style(--length: calc(100px * sibling-index())) { | |
| span { --match-100: yes; } | |
| } | |
| @container style(--length: calc(300px * sibling-count())) { | |
| span { --match-600: yes; } | |
| } | |
| </style> | |
| <div style="color:black"> | |
| <div id="rm1"></div> | |
| <div id="rm2"></div> | |
| <div id="c1" class="container"> | |
| <span id="t1"></span> | |
| </div> | |
| <div id="c2" class="container"> | |
| <span id="t2"></span> | |
| </div> | |
| </div> | |
| <script> | |
| test(() => { | |
| assert_equals(getComputedStyle(t1).backgroundColor, "rgba(0, 0, 0, 0)"); | |
| assert_equals(getComputedStyle(t1).color, "rgb(0, 0, 0)"); | |
| }, "sibling-index() in @container width query initially not matching"); | |
| test(() => { | |
| assert_equals(getComputedStyle(t1).backgroundColor, "rgba(0, 0, 0, 0)"); | |
| assert_equals(getComputedStyle(t1).color, "rgb(0, 0, 0)"); | |
| }, "sibling-count() in @container width query initially not matching"); | |
| test(() => { | |
| assert_equals(getComputedStyle(t1).getPropertyValue("--match-100"), "no"); | |
| assert_equals(getComputedStyle(t1).getPropertyValue("--match-600"), "no"); | |
| }, "sibling-index() in @container style() query initially not matching"); | |
| test(() => { | |
| assert_equals(getComputedStyle(t2).getPropertyValue("--match-100"), "no"); | |
| assert_equals(getComputedStyle(t2).getPropertyValue("--match-600"), "no"); | |
| }, "sibling-count() in @container style() query initially not matching"); | |
| rm1.remove(); | |
| rm2.remove(); | |
| test(() => { | |
| assert_equals(getComputedStyle(t1).backgroundColor, "rgb(0, 128, 0)"); | |
| assert_equals(getComputedStyle(t1).color, "rgb(0, 0, 0)"); | |
| }, "sibling-index() in @container width query matching after removal"); | |
| test(() => { | |
| assert_equals(getComputedStyle(t2).backgroundColor, "rgba(0, 0, 0, 0)"); | |
| assert_equals(getComputedStyle(t2).color, "rgb(0, 255, 0)"); | |
| }, "sibling-count() in @container width query matching after removal"); | |
| test(() => { | |
| assert_equals(getComputedStyle(t1).getPropertyValue("--match-100"), "yes"); | |
| assert_equals(getComputedStyle(t1).getPropertyValue("--match-600"), "no"); | |
| }, "sibling-index() in @container style() query matching after removal"); | |
| test(() => { | |
| assert_equals(getComputedStyle(t2).getPropertyValue("--match-100"), "no"); | |
| assert_equals(getComputedStyle(t2).getPropertyValue("--match-600"), "yes"); | |
| }, "sibling-count() in @container style() query matching after removal"); | |
| </script> |