The Selectors specification leaves the case-sensitivity of IDs, classes, element names, attribute names, and attribute values to be defined by the host language. [SELECTORS]
The unique identifier of HTML elements in documents that are in quirks mode must be treated as ASCII case-insensitive for the purposes of selector matching.
Classes from the class attribute
of HTML elements in documents that are in quirks
mode must be treated as ASCII case-insensitive
for the purposes of selector matching.
Attribute and element names of HTML elements in HTML documents must be treated as ASCII case-insensitive for the purposes of selector matching.
Everything else (attribute values on HTML elements, IDs and classes in no-quirks mode and limited-quirks mode, and element names, attribute names, and attribute values in XML documents) must be treated as case-sensitive for the purposes of selector matching.
There are a number of dynamic selectors that can be used with HTML. This section defines when these selectors match HTML elements. [SELECTORS] [CSSUI]
:link:visitedAll a elements that have an href attribute, all
area elements that have an href attribute, and all
link elements that have an href attribute, must match one of
:link and :visited.
Other specifications might apply more specific rules regarding how these elements are to match these pseudo-elements, to mitigate some privacy concerns that apply with straightforward implementations of this requirement.
:activeThe :active pseudo-class
is defined to match an element while
an element is being activated by the user
. For the
purposes of defining the :active pseudo-class only, an HTML
user agent must consider an element as being activated if
it is:
An element falling into one of the following categories between the time the user begins to indicate an intent to trigger the element's activation behavior and either the time the user stops indicating an intent to trigger the element's activation behavior, or the time the element's activation behavior has finished running, which ever comes first:
a elements that have an href attributearea elements that have an href attributelink elements that have an href attributebutton elements that are not disabledinput elements whose type attribute is in the Submit Button, Image Button, Reset Button, or Button statecommand elements that do not have a disabled attributeFor example, if the user is using a keyboard
to push a button element by pressing the space bar,
the element would match this pseudo-class in between the time
that the element received the keydown event and the time the
element received the keyup
event.
An element that the user indicates using a pointing device while that pointing device is in the "down" state (e.g. for a mouse, between the time the mouse button is pressed and the time it is depressed).
An element that has a descendant that is currently matching
the :active
pseudo-class.
:enabledThe :enabled pseudo-class
must match any element falling into one of the following
categories:
a elements that have an href attributearea elements that have an href attributelink elements that have an href attributebutton elements that are not disabledinput elements whose type attribute are not in the
Hidden state and that
are not disabledselect elements that are not disabledtextarea elements that are not disabledoptgroup elements that do not have a disabled attributeoption elements that are not disabledcommand elements that do not have a disabled attributeli elements that are children of
menu elements, and that have a child element that
defines a command, if the
first such element's Disabled State facet
is false (not disabled)fieldset elements that do not have a disabled attribute:disabledThe :disabled
pseudo-class must match any element falling into one of the
following categories:
button elements that are disabledinput elements whose type attribute are not in the
Hidden state and that
are disabledselect elements that are disabledtextarea elements that are disabledoptgroup elements that have a disabled attributeoption elements that are disabledcommand elements that have a disabled attributeli elements that are children of
menu elements, and that have a child element that
defines a command, if the
first such element's Disabled State facet
is true (disabled)fieldset elements that have a disabled attribute:checkedThe :checked pseudo-class
must match any element falling into one of the following
categories:
input elements whose type attribute is in the Checkbox state and whose
checkedness state is
trueinput elements whose type attribute is in the Radio Button state and whose
checkedness state is
trueoption elements whose selectedness is
truecommand elements whose type attribute is in the Checkbox state
and that have a checked
attributecommand elements whose type attribute is in the Radio state and that
have a checked
attribute:indeterminateThe :indeterminate
pseudo-class must match any element falling into one of the
following categories:
:defaultThe :default pseudo-class
must match any element falling into one of the following
categories:
button elements that are their form's
default buttoninput elements whose type attribute is in the Submit Button or Image Button state, and that
are their form's default buttoninput elements to which the checked attribute applies and
that have a checked
attributeoption elements that have a selected attribute:validThe :valid pseudo-class
must match any element falling into one of the following
categories:
form elements that are not the form
owner of any elements that themselves are candidates for
constraint validation but do not satisfy their constraints:invalidThe :invalid pseudo-class
must match any element falling into one of the following
categories:
form elements that are the form
owner of one or more elements that themselves are candidates for
constraint validation but do not satisfy their constraints:in-rangeThe :in-range
pseudo-class must match all elements that are candidates for
constraint validation, have range limitations,
and that are neither suffering from an underflow nor
suffering from an overflow.
:out-of-rangeThe :out-of-range
pseudo-class must match all elements that are candidates for
constraint validation, have range limitations,
and that are either suffering from an underflow or
suffering from an overflow.
:requiredThe :required
pseudo-class must match any element falling into one of the
following categories:
:optionalThe :optional
pseudo-class must match any element falling into one of the
following categories:
:read-only:read-writeThe :read-write
pseudo-class must match any element falling into one of the
following categories:
input elements to which the readonly attribute applies,
but that are not immutable
(i.e. that do not have the readonly attribute specified
and that are not disabled)textarea elements that do not have a readonly attribute, and
that are not disabledinput elements nor textarea
elementsThe :read-only
pseudo-class must match all other HTML elements.
:dir(ltr)The :dir(ltr) pseudo-class must
match all elements whose directionality is 'ltr'.
:dir(rtl)The :dir(rtl) pseudo-class must
match all elements whose directionality is 'rtl'.
Another section of this specification defines the
target element used with the :target pseudo-class.
This specification does not define when an element
matches the :hover, :focus, or :lang() dynamic pseudo-classes, as
those are all defined in sufficient detail in a language-agnostic
fashion in the Selectors specification. [SELECTORS]