blob: 65ee86a47ec4fcdaeac9d4002f67f9f645e2664b [file] [log] [blame]
<!doctype html>
<html>
<head>
<title>Test the specificity of the :not() pseudo class itself.</title>
<style>
/* -- 1. Set up the base color for everything with a very low specificity -- */
/* Each mathing of the type "notthereX should have a specificity of (0, 0, 1), the maxium of this selector should be (0, 0, 1). */
:not(:not(*), notthere1, notthere2, notthere3, notthere4, notthere5) {
background-color: white;
color: black;
}
/* The pseudo class :not() itself should have no specificity. The following rule should not have precedence over "*". */
:not(:not(*)) { /* Specificity: (0, 0, 0). */
background-color: red;
color: white;
}
/* -- 2. Test class specificity. -- */
.case {
background-color: red;
color: white;
}
body > testcase.case { /* Specificity (0, 1, 2). */
border: none;
}
testcase:not(.not-there) { /* Specificity (0, 1, 1). */
color: lime;
border: 10px solid black;
}
/* Specificity (0, 1, 1) since .not-there has the highest specificity inside :not(). */
testcase:not(:not(*), foo, .not-there, bar) {
background-color: pink;
border: 50px solid black;
}
/* -- 3. Test #id specificty, all those rules should override the class rules above. -- */
#case2 {
background-color: red;
color: white;
}
body > testcase#case2 { /* Specificity (1, 0, 2). */
border: none;
}
testcase:not(#case1) {
color: pink;
border: 10px solid black;
}
testcase:not(:not(*), foo, bar, foo.class1.class2, bar.class1.class2.class3.class4, #case1) {
background-color: lime;
border: 50px solid black;
}
</style>
</head>
<body>
<p>Test the specificity of the :not() pseudo class. The pseudo class :not() itself does not add anything to the specificity of a its selector, only the selectors inside :not() matter for specificity.</p>
<testcase class="case" id="case1">This sentence should be green on a pink background, without border.</testcase>
<testcase class="case" id="case2">This sentence should be pink on a green background, without border.</testcase>
</body>
</html>