1. Case-insensitive CSS attribute selectors

    Including an `i` before the `]` in a CSS attribute selector causes the attribute value to be matched in an ASCII-case-insensitive manner. For example, `[b="xyz" i]` would match both `<a b="xyz">` and `<a b="XYZ">`.

  2. selector list argument of :not()

    Selectors Level 3 only allowed `:not()` pseudo-class to accept a single simple selector, which the element must not match any of. Thus, `:not(a, .b, [c])` or `:not(a.b[c])` did not work. Selectors Level 4 allows `:not()` to accept a list of selectors. Thus, `:not(a):not(.b):not([c])` can instead be written as `:not(a, .b, [c])` and `:not(a.b[c])` works as intended.

  3. CSS :read-only and :read-write selectors

    :read-only and :read-write pseudo-classes to match elements which are considered user-alterable

  4. CSS 2.1 selectors

    Basic CSS selectors including: `*` (universal selector), `>` (child selector), `:first-child`, `:link`, `:visited`, `:active`, `:hover`, `:focus`, `:lang()`, `+` (adjacent sibling selector), `[attr]`, `[attr="val"]`, `[attr~="val"]`, `[attr|="bar"]`, `.foo` (class selector), `#foo` (id selector)

  5. CSS3 selectors

    Advanced element selection using selectors including: `[foo^="bar"]`, `[foo$="bar"]`, `[foo*="bar"]`, `:root`, `:nth-child()`, `:nth-last-child()`, `:nth-of-type()`, `:nth-last-of-type()`, `:last-child`, `:first-of-type`, `:last-of-type`, `:only-child`, `:only-of-type`, `:empty`, `:target`, `:enabled`, `:disabled`, `:checked`, `:not()`, `~` (general sibling)

  6. querySelector/querySelectorAll

    Method of accessing DOM elements using CSS selectors

  7. css at-rule: `@keyframes`: named timeline range keyframe selectors

  8. css selector: `:active`

  9. css selector: `:autofill`

  10. css selector: `::backdrop`

  11. css selector: `:blank`

  12. css selector: `:buffering`

  13. css selector: `:checked`

  14. css selector: closed

  15. css selector: `::cue`

  16. css selector: `:defined`

  17. css selector: `:disabled`

  18. css selector: `:empty`

  19. css selector: `:enabled`

  20. css selector: `:focus`

  21. css selector: `:fullscreen`

  22. css selector: `:future`

  23. css selector: `:host`

  24. css selector: `:host()`

  25. css selector: `:hover`

  26. css selector: `:in-range`

  27. css selector: `:invalid`

  28. css selector: `:lang()`

  29. css selector: `:last-child`

  30. css selector: `:link`

  31. css selector: `:modal`

  32. css selector: `:muted`

  33. css selector: `:only-child`

  34. css selector: open

  35. css selector: `::part`

  36. css selector: `:past`

  37. css selector: `:paused`

  38. css selector: `:playing`

  39. css selector: `:read-write`

  40. css selector: `:required`

  41. css selector: `:root`

  42. css selector: `:scope`

  43. css selector: `:seeking`

  44. css selector: `::slotted`

  45. css selector: `:stalled`

  46. css selector: `:target`

  47. css selector: `:user-valid`

  48. css selector: `:valid`

  49. css selector: `:visited`

  50. css selector: `:where()`