| <!DOCTYPE html> | |
| <title>Nested @layers</title> | |
| <link rel="help" href="https://drafts.csswg.org/css-nesting/#nested-group-rules"> | |
| <link rel="help" href="https://drafts.csswg.org/css-cascade-5/#layering"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <style> | |
| .a { | |
| /* This should have no effect. Only at-rules containing style rules | |
| are vaild when nested. */ | |
| @layer theme, base; | |
| } | |
| /* The theme layer wins over the base layer. */ | |
| @layer base, theme; | |
| .a { | |
| @layer theme { | |
| & { | |
| z-index: 1; | |
| } | |
| .b { | |
| background-color: green; | |
| } | |
| } | |
| } | |
| @layer base { | |
| .a { | |
| z-index: 0; | |
| } | |
| .a .b { | |
| background-color: red; | |
| } | |
| } | |
| </style> | |
| <main> | |
| <div class="a"> | |
| <div class="b"> | |
| </div> | |
| </div> | |
| </main> | |
| <script> | |
| test(() => { | |
| let a = document.querySelector("main > .a"); | |
| let b = document.querySelector("main > .a > .b"); | |
| assert_equals(getComputedStyle(a).zIndex, "1"); | |
| assert_equals(getComputedStyle(b).backgroundColor, "rgb(0, 128, 0)"); | |
| }, '@layer can be nested'); | |
| </script> |