This is pretty low down on the priority list for primitives, but it's worth noting that the list of which elements are considered "links" is fixed forever as a[href], area[href], link[href]. We're getting around that partially by applying our custom "UA styles" to custom-a[href], but maybe it'd be worth talking about letting these UA-defined pseudo-classes be redefined, especially once @TabAtkins's custom pseudos spec takes off.
There are a number of pseudo-classes and concepts that hook into the host language. For example:
more elements can match :hover than just the hovered element and its ancestors - when you hover a form control, its <label> is counted as hovered too.
a small list of elements can match :active when they're being "activated", with any method (all elements can match :active while they're being clicked).
which elements match the :drop() pseudo-class, depending on its arguments
all of the input pseudo-classes
which elements match the column pseudo-classes :nth-col(), :nth-last-col(), and which are indicated when the column combinator is used from a given element.
whether an element is "featureless" (matching none of the feature selectors, like the host element within a shadow tree)
which values of :dir() and :lang() match the element (though we should probably leave that solely to the existing HTML mechanisms of the dir and lang attributes).
This is pretty low down on the priority list for primitives, but it's worth noting that the list of which elements are considered "links" is fixed forever as
a[href], area[href], link[href]
. We're getting around that partially by applying our custom "UA styles" tocustom-a[href]
, but maybe it'd be worth talking about letting these UA-defined pseudo-classes be redefined, especially once @TabAtkins's custom pseudos spec takes off.