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