web-dev-qa-db-fra.com

Insertion d'un caractère Unicode dans la valeur de contenu CSS

J'ai un problème. J'ai trouvé le code HTML de la flèche vers le bas, ↓ ()

Cool. Maintenant, j'ai besoin de l'utiliser en CSS comme ceci:

nav a:hover {content:"&darr";}

Cela ne fonctionnera évidemment pas puisque ↓ est un symbole HTML. Il semble y avoir moins d’informations sur ces symboles "échappés Unicode" utilisés dans css. Il y a d'autres symboles comme \2020 que j'ai trouvés mais pas de flèches. Quels sont les codes de flèche?

296
davecave

Pourquoi ne pas simplement enregistrer/servir le fichier CSS au format UTF-8?

nav a:hover:after {
    content: "↓";
}

Si cela ne suffit pas, et que vous voulez garder tout cela en ASCII:

nav a:hover:after {
    content: "\2193";
}

Le format général d'un caractère Unicode dans une chaîne est \000000 à \FFFFFF - une barre oblique inversée suivie de six chiffres hexadécimaux. Vous pouvez laisser de côté 0 premiers chiffres lorsque le caractère Unicode est le dernier caractère de la chaîne ou lorsque vous ajoutez un espace après le caractère Unicode. Voir les spécifications ci-dessous pour plus de détails.


partie pertinente de la spécification CSS2 :

Troisièmement, les barres obliques inverses permettent aux auteurs de faire référence à des caractères qu’ils ne peuvent pas facilement insérer dans un document. Dans ce cas, la barre oblique inverse est suivie d’au plus six chiffres hexadécimaux (0..9A..F), qui représentent le caractère ISO 10646 ( [ISO10646] ) avec ce numéro, qui ne doit pas être zéro. (Il n’est pas défini dans CSS 2.1 que se passe-t-il si une feuille de style contient un caractère avec un point de code Unicode égal à zéro.) Si un caractère compris dans la plage [0- 9a-fA-F] suit le nombre hexadécimal, la fin du nombre doit être clarifiée. Il y a deux façons de le faire:

  1. avec un espace (ou un autre caractère d'espace blanc): "\ 26 B" ("& B"). Dans ce cas, les agents utilisateurs doivent traiter une paire "CR/LF" (U + 000D/U + 000A) comme un seul caractère d'espace blanc.
  2. en fournissant exactement 6 chiffres hexadécimaux: "\ 000026B" ("& B")

En fait, ces deux méthodes peuvent être combinées. Un seul caractère d'espace blanc est ignoré après une sortie hexadécimale. Notez que cela signifie qu'un espace "réel" après la séquence d'échappement doit être doublé.

Si le nombre est en dehors de la plage autorisée par Unicode (par exemple, "\ 110000" est supérieur au maximum de 10FFFF autorisé dans Unicode actuel), l'agent utilisateur peut remplacer l'échappement par le "caractère de remplacement" (U + FFFD). Si le caractère doit être affiché, l'agent utilisateur doit afficher un symbole visible, tel qu'un glyphe "caractère manquant" (cf. 15.2, point 5).

  • Remarque: les caractères d'échappement antislash sont toujours considérés comme faisant partie d'un identifiant ou d'une chaîne (c'est-à-dire, "\ 7B" n'est pas une ponctuation, même si "{" est utilisé et "\ 32" est autorisé au début de la procédure. début d'un nom de classe, même si "2" ne l'est pas).
    L'identifiant "te\st" est exactement le même que "test".

Liste complète: caractère Unicode "FLÈCHE VERS LE BAS" (U + 2193) .

452
Matt Ball