Unités de dimensionnement

Podcast CSS – 008: Unités de dimensionnement

Le Web est un support responsif, mais vous souhaitez parfois contrôler ses dimensions pour améliorer la qualité globale de l'interface. Un bon exemple de ceci est la limitation de la longueur des lignes pour améliorer la lisibilité. Comment procéder sur un support flexible tel que le Web ?

Dans ce cas, vous pouvez utiliser une unité ch, qui est égale à la largeur d'un caractère "0" dans la police affichée à sa taille calculée. Cette unité vous permet de limiter la largeur du texte à une unité conçue pour dimensionner le texte, ce qui offre un contrôle prévisible, quelle que soit la taille du texte. L'unité ch fait partie d'une série d'unités utiles dans des contextes spécifiques comme cet exemple.

Numéros

Des nombres sont utilisés pour définir les champs opacity et line-height, et même les valeurs de canal de couleur dans rgb. Les nombres sont des entiers sans unité (1, 2, 3, 100) et des nombres décimaux (0,1, 0,2, 0,3).

Les nombres ont une signification selon leur contexte. Par exemple, lorsque vous définissez line-height, un nombre est représentatif d'un ratio si vous le définissez sans unité secondaire:

p {
  font-size: 24px;
  line-height: 1.5;
}

Dans cet exemple, 1.5 est égal à 150% de la taille de police calculée en pixels de l'élément p. Cela signifie que si p a une font-size de 24px, la hauteur de la ligne sera calculée comme 36px.

Les numéros peuvent également être utilisés aux emplacements suivants:

  • Lorsque vous définissez des valeurs de filtres: filter: sepia(0.5) applique un filtre sépia 50% à l'élément.
  • Lorsque vous définissez l'opacité, opacity: 0.5 applique une opacité de 50%.
  • Dans les canaux de couleur: rgb(50, 50, 50), où les valeurs comprises entre 0 et 255 sont acceptables pour définir une valeur de couleur. Consultez la leçon sur les couleurs.
  • Pour transformer un élément, transform: scale(1.2) redimensionne l'élément de 120% par rapport à sa taille initiale.

Pourcentages

Lorsque vous utilisez un pourcentage dans CSS, vous devez savoir comment il est calculé. Par exemple,width est calculé en tant que pourcentage de la largeur disponible dans l'élément parent.

div {
  width: 300px;
  height: 100px;
}

div p {
  width: 50%; 
}

Dans l'exemple ci-dessus, la largeur de div p est 150px, en supposant que la mise en page utilise la box-sizing: content-box par défaut.

Si vous définissez margin ou padding en pourcentage, elles prendront partie de la largeur de l'élément parent, quelle que soit la direction.

div {
  width: 300px;
  height: 100px;
}

div p {
  margin-top: 50%; /* calculated: 150px */
  padding-left: 50%; /* calculated: 150px */
}

Dans l'extrait de code ci-dessus, margin-top et padding-left sont tous deux calculés sur 150px.

div {
  width: 300px;
  height: 100px;
}

div p {
  width: 50%; /* calculated: 150px */
  transform: translateX(10%); /* calculated: 15px */
}

Si vous définissez une valeur transform en pourcentage, elle est basée sur l'élément avec l'ensemble de transformation. Dans cet exemple, p a la valeur translateX de 10% et la valeur width de 50%. Tout d'abord, calculez la largeur: 150px, car elle correspond à 50% de la largeur de son parent. Prenez ensuite 10% sur 150px, soit 15px.

Dimensions et longueurs

Si vous associez une unité à un nombre, elle devient une dimension. Par exemple, 1rem est une dimension. Dans ce contexte, l'unité associée à un nombre est appelée "jeton de dimension" dans les spécifications. Les longueurs sont des dimensions faisant référence à la distance. Elles peuvent être absolues ou relatives.

Longueurs absolues

Toutes les longueurs absolues sont résolues sur la même base, ce qui les rend prévisibles partout où elles sont utilisées dans votre CSS. Par exemple, si vous utilisez cm pour dimensionner votre élément, puis l'imprimer, le résultat devrait être précis si vous le comparez à une règle.

div {
  width: 10cm;
  height: 5cm;
  background: black;
}

Si vous imprimiez cette page, le div sera imprimé sous la forme d'un rectangle noir de 10 x 5 cm. N'oubliez pas que le CSS est utilisé non seulement pour le contenu numérique, mais aussi pour le style du contenu imprimé. Les longueurs absolues peuvent s'avérer très utiles lors de la conception pour impression.

Unité Nom Équivalent à
cm Centimètres 1 cm = 96 px/2,54
mm Millimètres 1 mm = 1/10e de 1 cm
Q Quarts-millimètres 1Q = 1/40e de 1 cm
in Pouces 1 po = 2,54 cm = 96 px
pc Pics 1 pc = 1/6e de 1 po
pt Points 1 pt = 1/72e de 1 po
px Pixels 1px = 1/96e de 1po

Longueurs relatives

Une longueur relative est calculée par rapport à une valeur de base, comme un pourcentage. La différence entre ces valeurs et les pourcentages est que vous pouvez dimensionner les éléments en fonction du contexte. Cela signifie que CSS comporte des unités telles que ch qui utilisent la taille du texte comme base, et vw qui est basée sur la largeur de la fenêtre d'affichage (la fenêtre de votre navigateur). Les longueurs relatives sont particulièrement utiles sur le Web en raison de sa réactivité.

Unités de taille de police relative

Le code CSS fournit des unités utiles qui dépendent de la taille des éléments de la typographie affichée, comme la taille du texte lui-même (em unités) ou la largeur des caractères de police (ch unités).

unité par rapport à:
Par rapport à la taille de police, par exemple, 1,5 em sera 50% plus grand que la taille de police calculée de base de son parent. (Historiquement, la hauteur de la lettre majuscule "M").
Ex. Heuristique pour déterminer si la hauteur x, une lettre "x" ou ".5em" doit être utilisée dans la taille de police actuelle calculée de l'élément.
plat Hauteur des lettres majuscules dans la taille de police actuellement calculée de l'élément.
ch Avancement des caractères moyen d'un glyphe étroit dans la police de l'élément (représenté par le glyphe "0").
ic Avancement des caractères moyen d'un glyphe pleine largeur dans la police de l'élément, comme représenté par le glyphe "水" (idéogramme de l'eau CJK, U+6C34).
rem Taille de police de l'élément racine (16 pixels par défaut).
lh Hauteur de ligne de l'élément.
rlh Hauteur de ligne de l'élément racine.
Le texte "CSS" est x10 avec des libellés pour la hauteur du jambage ascendant, la hauteur du jambage et la hauteur x. "x-height" correspond à "1ex" et "0" à "1ch".

Unités relatives à la fenêtre d'affichage

Vous pouvez utiliser les dimensions de la fenêtre d'affichage (fenêtre du navigateur) comme base relative. Ces unités correspondent à l'espace disponible de la fenêtre d'affichage.

unité par rapport à
vw 1% de la largeur de la fenêtre d'affichage Les utilisateurs se servent de ce module pour effectuer des astuces sur les polices (par exemple, pour redimensionner la police d'en-tête en fonction de la largeur de la page, de sorte que la police se redimensionne à mesure que l'utilisateur redimensionne l'écran).
vh 1% de la hauteur de la fenêtre d'affichage Vous pouvez l'utiliser pour organiser les éléments dans une interface utilisateur, si vous disposez d'une barre d'outils en pied de page, par exemple.
vi 1% de la taille de la fenêtre d'affichage dans l'axe intégré de l'élément racine L'axe fait référence aux modes d'écriture. Dans les modes d'écriture horizontal tels que l'anglais, l'axe intégré est horizontal. Dans les modes d'écriture verticaux tels que certaines polices de caractères japonais, l'axe intégré s'exécute de haut en bas.
vb 1% de la taille de la fenêtre d'affichage dans l'axe de bloc de l'élément racine Pour l'axe du bloc, il s'agit du sens de la langue. Les langues de gauche à droite, comme l'anglais, ont un axe de bloc vertical, car les lecteurs anglophones analysent la page de haut en bas. Un mode d'écriture vertical présente un axe de bloc horizontal.
vmin 1% de la plus petite dimension de la fenêtre d'affichage
VMax 1% de la plus grande dimension de la fenêtre d'affichage.
div {
  width: 10vw;
}

p {
  max-width: 60ch;
}

Dans cet exemple, div correspondra à 10% de la largeur de la fenêtre d'affichage, car 1vw correspond à 1% de la largeur de la fenêtre d'affichage. Le max-width de l'élément p est 60ch, ce qui signifie qu'il ne peut pas dépasser la largeur de 60 caractères "0" dans la police et la taille calculées.

Unités diverses

D'autres unités ont été spécifiées pour traiter des types de valeurs spécifiques.

Unités d'angle

Dans le module de couleur, nous avons examiné les unités d'angle, qui sont utiles pour définir des valeurs en degrés, telles que la teinte dans hsl. Elles sont également utiles pour faire pivoter des éléments dans des fonctions de transformation.

div {
  width: 150px;
  height: 150px;
  transform: rotate(60deg);
}

En utilisant l'unité d'angle deg, vous pouvez faire pivoter une div de 90° sur son axe central.

div {
  background-image: url('a-low-resolution-image.jpg');
}

@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
  div {
    background-image: url('a-high-resolution-image.jpg');
  }
}

Unités de résolution

Dans l'exemple précédent, la valeur de min-resolution est 192dpi. L'unité dpi correspond aux points par pouce (points par pouce). Pour cela, il est utile de détecter les écrans à très haute résolution, tels que les écrans Retina, dans une requête média, et de diffuser une image de résolution supérieure.

Testez vos connaissances

Tester vos connaissances sur le dimensionnement

Parmi les propositions suivantes, lesquelles sont des dimensions valides ?

cm
Centimètres, c'est-à-dire une dimension absolue valide.
ui
L'interface utilisateur n'est pas une dimension dans CSS.
in
Pouces, c'est-à-dire une dimension absolue valide.
8
Il ne s'agit pas d'une dimension CSS
px
Pixels, c'est-à-dire une dimension absolue valide.
ch
Unités de caractères, une dimension relative valide.
ux
L'expérience utilisateur n'est pas une dimension dans CSS.
em
Lettres "M", une dimension relative valide.
x
Unités alphabétiques : il s 'agit d'une dimension relative valide.

En quoi les unités absolues et relatives sont-elles différentes ?

Les valeurs absolues ne peuvent pas changer, contrairement aux unités relatives.
Les valeurs absolues peuvent changer, mais pas la base par rapport à laquelle elles sont calculées.
Une longueur absolue est calculée par rapport à une seule valeur de base partagée, où une unité relative est comparée à une valeur de base susceptible de changer.
Les unités relatives sont plus adaptatives et fluides en raison de leur prise en compte du contexte, mais leur puissance et leur prévisibilité peuvent être fondamentales pour certaines conceptions.

Les unités de la fenêtre d'affichage sont absolues.

Vrai
Elles peuvent sembler absolues, mais elles sont relatives à une fenêtre d'affichage, c'est-à-dire un iFrame ou un WebView, et ne sont pas toujours représentatives de la taille de l'écran d'un appareil.
Faux
Ils sont relatifs à la fenêtre du document dans laquelle ils ont été créés, qui peut ou non être identique à l'écran d'un appareil.

Ressources