identificatori possono contenere anche caratteri di escape e qualsiasi carattere ISO 10646 come un codice numerico (vedi voce successiva). Ad esempio, l'identificatore "B & W?" può essere scritto come "B \ & W \?" o "B \ 26 W \ 3F". [...]
In CSS 2.1, un carattere barra rovesciata (\) può indicare uno dei tre tipi di escape caratteri. All'interno di un commento CSS, , una barra rovesciata è di per sé stessa, e se una barra rovesciata è immediatamente seguita dalla fine del foglio di stile, rappresenta anche (ad esempio un token DELIM).
Innanzitutto, all'interno di una stringa, una barra rovesciata seguita da un capo viene ignorato (cioè, la stringa si considera non contenere la barra rovesciata o nuova riga). Al di fuori di una stringa, una barra rovesciata seguita da una nuova riga sta per per sé (vale a dire, un DELIM seguito da una nuova riga).
In secondo luogo, annulla il significato di caratteri CSS speciali. Qualsiasi carattere (ad eccezione di una cifra esadecimale, avanzamento riga, ritorno a capo o feed di modulo ) può essere sostituito con una barra rovesciata per rimuovere il suo significato speciale . Ad esempio, "\"" è una stringa costituita da una camera preventivo. Preprocessori foglio stile non devono rimuovere questi backslash da un foglio stile dal momento che avrebbe cambiato il significato del foglio di stile.
In terzo luogo, fughe backslash consentono agli autori di fare riferimento ai caratteri che non è possibile inserire in un documento . In questo caso, la barra rovesciata è seguita da al massimo sei cifre esadecimali (0..9A..F), che corrispondono a il carattere ISO 10646 ([ISO10646]) con quel numero, che non deve essere zero (non è definito in CSS 2.1 cosa succede se un foglio di stile contiene un carattere con punto di codice Unicode zero.) Se un carattere nell'intervallo [0-9a-fA -F] segue il numero esadecimale, la fine di il numero deve essere chiarito. Ci sono due modi per farlo:
- con uno spazio (o un altro carattere di spazio bianco): "\ 26 B" ("& B"). In questo caso, i programmi utente dovrebbero trattare una coppia "CR/LF" (U + 000D/U + 000A) come un singolo carattere di spazio bianco.
- fornendo esattamente 6 cifre esadecimali: "\ 000026B" ("& B")
Infatti, questi due metodi possono essere combinati. Solo un carattere bianco carattere viene ignorato dopo una fuga esadecimale. Nota che questo significa che che uno spazio "reale" dopo la sequenza di escape deve essere raddoppiato.
Se il numero è esterno all'intervallo consentito da Unicode (ad es., "\ 110000" è sopra il massimo 10FFFF consentito nell'attuale Unicode), l'UA può sostituire l'escape con il "carattere di sostituzione" (U + FFFD). Se il carattere deve essere visualizzato, l'UA dovrebbe mostrare un simbolo visibile, come un glifo "carattere mancante" (vedere 15.2, punto 5).
Si noti che la fuga è importante, altrimenti non sarebbero identificatori validi (sottolineatura mia):
Il codice è scritto male. Non dovresti usarlo se non forzato. Come novizio CSS, non dovresti nemmeno leggerlo se non forzato. Il caos è causato dall'uso di nomi di classe come '125%', che sono (formalmente validi ma) non validi in più di un modo. –
@ JukkaK.Korpela Quali sono i modi in cui sono cattivi? –
@torazaburo, riflettono un rendering previsto piuttosto che un ruolo strutturale o semantico (e diventano fuorvianti se il rendering viene modificato); e ti costringono a usare goffi meccanismi di fuga nei CSS, come mostrato nella domanda. –