| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <title>CSS Selectors: :is()</title> | |
| <link rel="author" title="Victoria Su" href="mailto:victoriaytsu@google.com"> | |
| <link rel="help" href="https://drafts.csswg.org/selectors-4/#matches"> | |
| <meta name="assert" content="This tests that the :is() selector is effective when nested"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <style> | |
| /* Testing that highest specificity is chosen for class outside of :is() */ | |
| .a+.b+.c>.e+.d { | |
| color: black; | |
| font-size: 10px; | |
| width: 10px; | |
| } | |
| .e:is(.b+.f, .e:is(*, .c>.e, .g, *))+.d { | |
| color: red; | |
| font-size: 20px; | |
| } | |
| .a+.b+.c>.e+.d { | |
| color: yellow; | |
| } | |
| /* Testing specificty of a class within :is() */ | |
| .a+.c>.e { | |
| color: black; | |
| } | |
| .e:is(.b+.f, :is(.c>.e, .g)) { | |
| color: red; | |
| } | |
| .c>.e { | |
| color: black; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="a"> | |
| </div> | |
| <div class="b" id="b2"> | |
| </div> | |
| <div class="c" id="c2"> | |
| <div class="e"> | |
| </div> | |
| <div class="d" id="d1"> | |
| Yellow | |
| </div> | |
| </div> | |
| <div class="a"> | |
| </div> | |
| <div class="c" id="c2"> | |
| <div class="e" id="e1"> | |
| Red | |
| </div> | |
| </div> | |
| <script> | |
| var red = "rgb(255, 0, 0)"; | |
| var yellow = "rgb(255, 255, 0)"; | |
| test(() => { | |
| assert_equals(getComputedStyle(d1).color, yellow); | |
| assert_equals(getComputedStyle(d1).fontSize, "20px"); | |
| assert_equals(getComputedStyle(d1).width, "10px"); | |
| }, "Test nested :is() chooses highest specificity for class outside :is()."); | |
| test(() => { | |
| assert_equals(getComputedStyle(e1).color, red); | |
| }, "Test nested :is() specificity for class within arguments."); | |
| </script> | |
| </body> | |
| </html> |