Text-transform - Propriété CSS

text-transform

Résumé des caractéristiques de la propriété text-transform

Description rapide
Casse du texte (minuscules, majuscules...).
Statut
Standard
S'applique à
Tout élément contenant du texte.
Utilisable sur
HTML, SVG, MathML
Valeurs prédéfinies
none | capitalize | uppercase | lowercase | full-width | full-size-kana | math-auto
Pourcentages
Ne s'appliquent pas.
Valeur initiale
none
Héritée par défaut
Oui.
Type d'animation
Discrète : lors d'une animation, la propriété text-transform passe d'une valeur à l'autre sans transition.
Module W3C
Module CSS - Texte
Références (W3C)
 🡇  
 🡅  
Statut du document: WD (document de travail)

Statut du document: CR (document candidat à la recommandation)

Statut du document: REC (recommandation)

Statut du document: DEPR (Ancienne spécification, déclarée obsolète)

Schéma de la syntaxe de text-transform.

Text-transform property - Syntax diagramSyntax diagram of the text-transform CSS property. See stylescss.free.fr for details. none none capitalize capitalize uppercase uppercase lowercase lowercase math-auto math-auto full-width full-width full-size-kana full-size-kanatext-transform:;text-transform:;
Schéma syntaxique de la propriété text-transform.
Cliquez sur les liens du schéma pour plus de précisons sur les valeurs.

Description de la propriété text-transform.

La propriété text-transform force la casse des caractères, c'est à dire provoque un affichage en majuscules ou en minuscules, quelque soit la façon dont le texte est écrit dans le document (le fichier HTML).

En principe, les opérations de copier-coller récupèrent le texte tel qu'il est écrit dans le document original, en considérant que text-transform n'agit que sur la mise en forme, et ne modifie pas le texte lui-même. Cependant certains navigateurs, comme Chrome effectuent le copier-coller avec le texte mis en forme.

Voir aussi la propriété font-variant-caps qui offre des fonctionnalités complémentaires, mais dépendantes des possibilités de la police de caractères utilisée.

Exemples des possibilités
de text-transform :

Texte normal
Tout en majuscules
Tout en minuscules
Initiales en majuscules

Exemples des possibilités
de font-variant-caps :

Texte normal
Petites capitales
Tout en petites capitales
Minuscules grande taille

Lettres capitales et lettres majuscules.

Les puristes distinguent les capitales et les majuscules, en considérant que les majuscules sont imposées par les règles orthographiques de la langue (en français la première lettre d'une phrase est en majuscule, de même que l'initiale des noms propres), tandis que les capitales sont un choix typographique qui n'obéit à aucune règle générale.
Suivant cette distinction, les majuscules doivent obligatoirement figurer dans le document original (html). Seules les capitales peuvent être gérées par text-transform.

Particularité des langues.

Le changement de casse comporte de nombreuses particularités dépendantes de la langue du texte. Il est donc très important que le document (HTML ou autre) comporte l'information de la langue utilisée. En HTML, ce sera l'attribut lang.

Voici quelques unes des particularités relatives au changement de casse, mais il y en a beaucoup d'autres :

  • En langue allemande, le caractère minuscule unique ß devient deux caractères en majuscule : SS.
  • En néerlandais, les deux lettres ij sont considérées comme un seul caractère. Si elles se trouvent au début d'un mot, text-transform:capitalize les passe toutes les deux en majuscules.
  • Dans la plupart des langues latines, les caractères minuscules accentués ont leur équivalent en majuscule, également accentués. La langue grecque a des règles plus compliquées

Valeurs pour text-transform.

  • text-transform: none;

    Valeur par défaut. La casse des caractères n'est pas modifiée : ils s'affichent tels qu'ils sont écrits dans le code HTML.

    ExeMple pOur teXt-transForm
    Texte d'origine
    ExeMple pOur teXt-transForm
    text-transform:none;
  • text-transform: uppercase;

    Tous les caractères sont affichés en majuscules.

    Échantillon
    â é è ê ï æ œ ç ß
    Texte d'origine
    Échantillon
    â é è ê ï æ œ ç ß
    text-transform:uppercase;
  • text-transform: lowercase;

    Tous les caractères sont affichés en minuscules.

    Échantillon
    Â Ê Î Ô Û Æ Œ Ç
    Texte d'origine
    Échantillon
    Â Ê Î Ô Û Æ Œ Ç
    text-transform:lowercase;
  • text-transform: capitalize;

    Le premier caractère de chaque mot est converti en majuscule, les autres caractères sont inchangés.

    On note sur l'exemple ci-contre que le caractère qui suit un tiret n'est pas en majuscule : le tiret n'est pas considéré comme un séparateur de mots. Néanmoins, ceci peut être différent d'un navigateur à l'autre.

    Les balises inline telles que a, abbr, etc. ne doivent pas être considérées comme un début ou une fin de mot.

    ExeMple pOur teXt-transForm
    Texte d'origine
    ExeMple pOur teXt-transForm
    text-transform:capitalize;
  • text-transform: full-width;

    Les caractères sont remplacés par leur forme "pleine largeur". Si cette forme n'existe pas, le caractère est inchangé. Appliquée sur des caractères latins, full-width a pour effet d'aligner (à peu près) les caractères latins sur les idéogrammes CJK.

    Cette valeur est cumulable avec capitalize, uppercase et lowercase. Le navigateur traite en premier les changements de casse, quelque soit l'ordre dans lequel les valeurs sont indiquées.

    LATIN
    한국어 문자
    Texte d'origine
    LATIN
    한국어 문자
    text-transform:full-width;
  • text-transform: full-size-kana;

    Les caractères kana minuscules sont remplacés par leur forme "pleine largeur". Cette valeur est généralement utilisée pour les notations du type "Ruby" pour améliorer la lisibilité des petits caractères généralement employés dans les annotation Ruby. Pour avoir plus d'infos sur les annotations Ruby.

    Cette valeur est cumulable avec capitalize, uppercase et lowercase. Le navigateur traite en premier les changements de casse, quelque soit l'ordre dans lequel les valeurs sont indiquées.

    河内Hénèi
    Texte d'origine
    河内Hénèi
    text-transform:full-size-kana;
  • text-transform: math-auto;

    La valeur math-auto est encore peu reconnue par les navigateurs. Elle s'applique aux formules mathématiques décrites en MathML. Pour l'instant elle passe en italiques les identifiants (balises mi) avec une seule lettre (généralement les variables).

    Remarque 1 : Il ne s'agit pas du même italique que celui qui est obtenu avec la propriété font-style, avec text-transform les caractères sont remplacés par leur équivalent en italique (caractères depuis le code hexadécimal 1D3F3 jusqu'au code 1D345).

    Remarque 2 : dans les formules mathématiques, text-transform est déjà positionné sur math-auto. Cependant text-transform:math-auto peut cependant être utile si l'option a été désactivée précédemment.

    Sur l'exemple ci-dessous on voit que le mot cos n'a pas été changé, alors que x a été changé en italique.

    A2 + B2 = C2
    cos(x) = 0.707
    text-transform:none;
    A2 + B2 = C2
    cos(x) = 0.707
    text-transform:math-auto;
  • text-transform: initial; (none) text-transform: inherit; text-transform: revert; text-transform: revertLayer; text-transform: unset;

    Les valeurs communes sont présentées sur ces pages : initial, inherit, revert, revert-layer, unset.

Exemples d'utilisation de la propriété text-transform.

En typographie il est fréquent d'inscrire la première ligne des paragraphes en majuscules, particulièrement dans le cas d'utilisation de lettrines. Il n'est pas possible de réaliser cela dans le code source en inscrivant le texte directement en majuscules, car on ne connaît pas à priori la longueur de la ligne.

On parle de lettrine lorsque la première lettre d'un texte ou d'un paragraphe est dans une taille de caractère nettement supérieure à celle du texte.

Exemple d'animation de text-transform.

Comme toutes les propriétés qui attendent des valeurs non numériques, text-transform passe d'une valeur à l'autre sans transition, de façon brutale. Pour inclure toutes les valeurs possibles dans une animation, il faut les énumérer une par une, comme nous l'avons fait dans cet exemple.

Buvez de ce whisky que le patron juge fameux

Exemple interactif avec la propriété text-transform.

text-transform :
Bomfiz parvînt jusqu'à dix whisky-glace (1)

a2 + b2 = c2

(1) Pangramme anonyme.

Compatibilité des navigateurs avec text-transform.

Colonne 1
Support par les navigateurs de la propriété text-transform qui permet de changer la casse d'un texte.
Colonne 2
Support de la valeur full-width pour la propriété text-transform.
Colonne 3
Support de la valeur full-width-kana pour la propriété text-transform.
Colonne 4
Support par les navigateurs de la valeur math-auto pour la propriété text-transform.
Colonne 5
Support par les navigateurs des lettres grecques accentuées.

Remarques :

(1) La propriété text-transform ne fonctionne pas avec le pseudo élément ::first-line.

1
Propriété
text-transform
2
Valeur
full-width
3
Valeur
full-size-kana
4
Valeur
math-auto
5
Lettres grecques
accentuées
Estimation de la prise en charge globale.
96%
16%
165%
77%
78%

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Internet Explorer

KaiOS Browser

Opéra Mobile

Chrome

Edge

Opéra

Safari

Safari sur IOS

Androïd Brower

Chrome pour Androïd

Firefox pour Androïd

Samsung Internet

Firefox

Baidu Browser

QQ Browser

UC Browser pour Androïd

Opéra mini

Histoire de la propriété text-transform.

Voir aussi, au sujet des manipulations de texte.

Les spécifications CSS éditées par le W3C sont organisées en modules. La propriété text-transform fait partie du module CSS Text Module. Les définitions suivantes sont également décrites dans ce même module.

Propriétés :

hanging-punctuation
Définit la ponctuation suspendue (caractères autorisés à déborder dans la marge).
hyphenate-character
Définit le caractère qui sera à utiliser comme marque de césure.
hyphenate-limit-chars
Définit le nombre minimal de caractères pour autoriser la césure d'un mot.
hyphenate-limit-last
Définit si les césures sont autorisées à la fin d'une colonne, d'une page, etc.
hyphenate-limit-lines
Définit le nombre maximal de lignes successives se terminant une césure
hyphenate-limit-zone
Définit le nombre maximal d'espaces pour autoriser ou interdire la césure.
hyphens
Définit si les mots peuvent être coupés en fin de ligne. La césure des mots donne une mise en page plus agréable mais peut être gênante dans certains cas.
letter-spacing
Espacement des lettres.
line-break
Définit les ruptures de lignes pour les langues CJK (chinois, japonais, coréen).
line-padding
Ajoute un espace au début et à la fin des lignes.
overflow-wrap
Gestion des coupures de mots pour les langues CJK et quelques autres.
tab-size
Définit la taille des caractères de tabulation.
text-align
Spécifie comment doit être aligné le texte de l'élément.
text-align-all
Définit l'alignement des lignes d'un texte (synonyme de text-align).
text-align-last
Définit l'alignement de la dernière ligne des paragraphes.
text-autospace
Définit l'espace entre les caractères adjacents (utilisable pour les langues CJK).
text-group-align
text-indent
Définit le retrait de la première ligne des paragraphe (indentation).
text-justify
Sélectionne la méthode utilisée pour justifier le texte.
text-space-collapse
Définit comment gérer les espaces et les espaces multiples dans le texte.
text-space-trim
Définit si les espaces au début et à la fin du texte de l'élément doivent être conservés ou supprimés.
text-spacing
text-spacing-trim
Definit l'espacement autour des caractères de ponctuation CJK.
text-wrap
Définit la gestion des retours à la ligne du texte.
text-wrap-mode
Définit si les retours à la ligne sont autorisés.
text-wrap-style
Définit comment les saut de ligne vont se faire.
white-space
Définit comment sont restitués les espaces multiples et les retours chariot.
white-space-collapse
Définit comment les espaces successifs et les retours à la ligne doivent être traités.
white-space-trim
Définit si comment le navigateur doit supprimer les espaces réductibles.
word-boundary-detection
Définit quelle logique le navigateur doit utilier pour identifier les limites des mots.
word-boundary-expansion
Substitue certains caractères de séparation de mots par d'autres.
word-break
Coupure des mots longs.
word-space-transform
Normalise les caractères d'espacement (écritures CJK).
word-spacing
Permet d'ajuster l'espacement des mots.
word-wrap
Coupure des mots pour les langues CJK et quelques autres.
wrap-after
Autorise ou non les sauts de lignes après la boite.
wrap-before
Autorise ou non les sauts de lignes avant la boite.
wrap-inside
Autorise ou non les sauts de lignes dans la boite.