<ident>
The <ident>
CSS data type denotes an arbitrary string used as an identifier.
Syntax
A CSS identifier consists of one or more characters, which can be any of the following:
- any ASCII character in the ranges
A-Z
anda-z
- any decimal digit (
0
to9
) - a hyphen (
-
) - an underscore (
_
) - any other Unicode character
U+00A0
and higher (that is, any other non-ASCII Unicode character) - an escaped character
Additionally, an identifier must not start with an unescaped digit, and must not start with an unescaped hyphen followed by an unescaped digit.
Note that id1
, Id1
, iD1
and ID1
are all different identifiers because they are case-sensitive. On the other hand, since there are several ways to escape a character, toto\?
and toto\3F
are the same identifiers.
Escaping characters
Escaping a character means representing it in a way that changes how it is interpreted by a software system. In CSS, you can escape a character by adding a backslash (\
) in front of the character. Any character, except the hexadecimal digits 0-9
, a-f
, and A-F
, can be escaped in this way. For example, &
can be escaped as \&
.
You can also escape any character with a backslash followed by the character's Unicode code point represented by one to six hexadecimal digits. For example, &
can be escaped as \26
. In this usage, if the escaped character is followed by a hexadecimal digit, do one of the following:
- Place a space or other whitespace character after the Unicode code point.
- Provide the full six-digit Unicode code point of the character being escaped.
For example, the string &123
can be escaped as \26 123
(with a whitespace) or \000026123
(with the six-digit Unicode code point for &
) to ensure that 123
is not considered as part of the escape pattern.
Examples
Valid identifiers
nono79 /* A mix of alphanumeric characters and numbers */ ground-level /* A mix of alphanumeric characters and a dash */ -test /* A hyphen followed by alphanumeric characters */ --toto /* A custom-property like identifier */ _internal /* An underscore followed by alphanumeric characters */ \22 toto /* An escaped character followed by alphanumeric characters */ \000022toto /* Same as the previous example */ bili\.bob /* A correctly escaped period */ 🔥123 /* A non-ASCII character followed by numbers */
Invalid identifiers
34rem /* Must not start with a decimal digit */ -12rad /* Must not start with a dash followed by a decimal digit */ bili.bob /* ASCII characters apart from alphanumerics must be escaped */ 'bilibob' /* Treated as a string */ "bilibob" /* Treated as a string */
Specifications
Specification |
---|
CSS Values and Units Module Level 4 # typedef-ident |
Browser compatibility
As this type is not a real type but a convenience type used to simplify the definition of other CSS syntax, there is no browser compatibility information as such.