| <!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> |