parse-has.html (1671B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>CSS Selectors: The relational pseudo-class</title> 4 <link rel="author" title="Byungwoo Lee" href="mailto:blee@igalia.com"> 5 <link rel="help" href="https://drafts.csswg.org/selectors-4/#has-pseudo"> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="/css/support/parsing-testcommon.js"></script> 9 <script> 10 test_valid_selector(':has(a)'); 11 test_valid_selector(':has(#a)'); 12 test_valid_selector(':has(.a)'); 13 test_valid_selector(':has([a])'); 14 test_valid_selector(':has([a="b"])'); 15 test_valid_selector(':has([a|="b"])'); 16 test_valid_selector(':has(:hover)'); 17 test_valid_selector('*:has(.a)', ['*:has(.a)', ':has(.a)']); 18 test_valid_selector('.a:has(.b)'); 19 test_valid_selector('.a:has(> .b)'); 20 test_valid_selector('.a:has(~ .b)'); 21 test_valid_selector('.a:has(+ .b)'); 22 test_valid_selector('.a:has(.b) .c'); 23 test_valid_selector('.a .b:has(.c)'); 24 test_valid_selector('.a .b:has(.c .d)'); 25 test_valid_selector('.a .b:has(.c .d) .e'); 26 test_valid_selector('.a:has(.b:is(.c .d))'); 27 test_valid_selector('.a:is(.b:has(.c) .d)'); 28 test_valid_selector('.a:not(:has(.b))'); 29 test_valid_selector('.a:has(:not(.b))'); 30 test_valid_selector('.a:has(.b):has(.c)'); 31 test_valid_selector('*|*:has(*)', ':has(*)'); 32 test_valid_selector(':has(*|*)', ':has(*)'); 33 test_invalid_selector(':has'); 34 test_invalid_selector('.a:has'); 35 test_invalid_selector('.a:has b'); 36 /* :has() is unforgiving, but :is() can still forgive */ 37 test_invalid_selector(':has()'); 38 test_invalid_selector(':has(123)'); 39 test_invalid_selector(':has(.a, 123)'); 40 </script>