There are a bunch of pseudo elements and classes:
::after, ::before, ::first-letter, ::first-line, ::selection, ::backdrop
:active, :checked, :default, :dir(), :disabled, :empty, :enabled, :first, :first-child, :first-of-type, :fullscreen, :focus, :hover, :indeterminate, :in-range, :invalid, :lang(), :last-child, :last-of-type, :left, :link, :not(), :nth-child(), :nth-last-child(), :nth-last-of-type(), :nth-of-type(), :only-child, :only-of-type, :optional, :out-of-range, :read-only, :read-write, :required, :right, :root, :scope, :target, :valid, :visited
And there also others like ::-webkit-input-placeholder, ::-moz-placeholder and so on. I don't know what elements they are. But I think they are pseudo elements as it has double colons.
There's an asterisk selector *
to select all elements that are inside DOM-Tree.
Now, I'm curious to know why there's no single selector for selecting all pseudo elements and pseudo classes that are outside the DOM-Tree even in css3 or css4?
*pseudo{
color: red;
}