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. :default CSS pseudo-class

    The `:default` pseudo-class matches checkboxes and radio buttons which are checked by default, `<option>`s with the `selected` attribute, and the default submit button (if any) of a form.

  3. CSS Generated content for pseudo-elements

    Method of displaying text or images before or after the given element's contents using the ::before and ::after pseudo-elements. All browsers with support also support the `attr()` notation in the `content` property.

  4. :in-range and :out-of-range CSS pseudo-classes

    If a temporal or number `<input>` has `max` and/or `min` attributes, then `:in-range` matches when the value is within the specified range and `:out-of-range` matches when the value is outside the specified range. If there are no range constraints, then neither pseudo-class matches.

  5. :placeholder-shown CSS pseudo-class

    Input elements can sometimes show placeholder text as a hint to the user on what to type in. See, for example, the placeholder attribute in HTML5. The :placeholder-shown pseudo-class matches an input element that is showing such placeholder text.

  6. 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)

  7. CSS3 attr() function for all properties

    While `attr()` is supported for effectively all browsers for the `content` property, CSS Values and Units Level 5 adds the ability to use `attr()` on **any** CSS property, and to use it for non-string values (e.g. numbers, colors).

  8. hidden attribute

    The `hidden` attribute may be applied to any element, and effectively hides elements similar to `display: none` in CSS.

  9. Scoped attribute

    Deprecated method of allowing scoped CSS styles using a "scoped" attribute. Now [removed from the specification](https://github.com/whatwg/html/issues/552) and replaced by the [@scope CSS rule](/css-cascade-scope).

  10. SVG vector-effect: non-scaling-stroke

    The `non-scaling-stroke` value for the `vector-effect` SVG attribute/CSS property makes strokes appear as the same width regardless of any transformations applied.

  11. CSS -webkit-user-drag property

    The non-standard `-webkit-user-drag` CSS property can be used to either make an element draggable or explicitly non-draggable (like links and images). See the standardized [draggable attribute/property](/mdn-api_htmlelement_draggable) for the recommended alternative method of accomplishing the same functionality.

  12. css selector: attribute selector (`[attr=value]`)

  13. css selector: attribute selector (`[attr=value]`): case-sensitive modifier (`s`)

  14. types: `attr()`

  15. types: `attr()`: `<attr-name>` accepts namespaces

  16. types: `attr()`: `<declaration-value>`

  17. types: `attr()`: fallback values (`<declaration-value>`)

  18. types: `attr()`: raw-string

  19. types: `attr()`: `type(<syntax>)` function

  20. types: `attr()`: `type(<syntax>)` function: `<angle>`

  21. types: `attr()`: `type(<syntax>)` function: `<color>`

  22. types: `attr()`: `type(<syntax>)` function: `<custom-ident>`

  23. types: `attr()`: `type(<syntax>)` function: `<ident>`

  24. types: `attr()`: `type(<syntax>)` function: `<image>`

  25. types: `attr()`: `type(<syntax>)` function: `<integer>`

  26. types: `attr()`: `type(<syntax>)` function: `<length>`

  27. types: `attr()`: `type(<syntax>)` function: `<length-percentage>`

  28. types: `attr()`: `type(<syntax>)` function: `<number>`

  29. types: `attr()`: `type(<syntax>)` function: `<percentage>`

  30. types: `attr()`: `type(<syntax>)` function: `<resolution>`

  31. types: `attr()`: `type(<syntax>)` function: `<string>`

  32. types: `attr()`: `type(<syntax>)` function: `<time>`

  33. types: `attr()`: `type(<syntax>)` function: `<transform-function>`

  34. javascript statement: import: import attributes with `assert` syntax (formerly import assertions): `assert {type: 'css'}`

  35. javascript statement: import: import attributes (`with` syntax): `with {type: 'css'}`