Leçon 9 : Mises en forme de base

Leçon Progress:

 

Objectifs

      1. Appliquer directement dans le code HTML des mises en forme simples, de caractères ou de paragraphes

Nous abordons enfin la deuxième partie essentielle de ce cours sur l’intégration avec les styles qui permettent l’ « habillage » graphique des pages web. Cette première leçon est spécifiquement consacré au principe des styles, les feuilles dites CSS étant vues à la leçon suivante. Les styles que nous allons voir concernent le texte, les paragraphes et les listes.

Examinons tout d’abord comment les styles s’écrivent de manière générale.

Styles

Un style est donné par trois éléments :

      1. une propriété, par exemple color pour la couleur du texte
      2. une valeur parmi un ensemble de valeurs permises, par exemple yellow
      3. un élément auquel il applique

Par exemple pour passer en jaune la couleur d’un titre, nous écrivons ceci : <h1 style="color:yellow">Titre</h1>.

Le style est donc appliqué directement à un élément par l’attribut style et s’écrit en général propriété:valeur. Nous verrons par la suite d’autres façons d’attribuer un style à un ou plusieurs éléments.

Vous pouvez attribuer plusieurs styles en une fois en les séparant par un point-virgule, par exemple :

<p style="color:green; font-size:12px"/>

Modalités d’application

Un style, selon sa nature, peut avoir un effet visuel selon deux modalités :

      1. soit il s’applique uniquement à l’élément et pas à ses descendants ; c’est par exemple le cas de border que nous verrons dans la leçon suivante, qui trace une bordure autour de l’élément uniquement
      2. soit il s’applique à tout le contenu, c’est le cas en général pour tout ce qui touche au texte ; par exemple modifier la taille de police par font-size applique le changement à tout le texte contenu dans l’élément, quelque soit les sous-éléments

Prenons cette situation :

<p style="color:red">Le petit <b>chat</b> est <span style="color:blue">gris</span></p>

Le résultat, que vous pouvez tester en copiant ce code dans une page, est assez logique : la couleur rouge s’applique à tout le texte, y compris dans la balise <b>, sauf à « gris » pour lequel la couleur a été définie en bleu. Notons au passage une nouvelle balise, dont nous reparlerons, qui sert uniquement à appliquer un style : span.

Avant d’entrer dans le cœur du sujet, voyons quelles valeurs peut prendre une propriété :

  1. une liste fermée de valeurs possibles, comme par exemple font-style qui peut valoir normal, italic ou oblique
  2. une couleur, pour color ou background-color par exemple
  3. une adresse web (URL) comme pour background-image
  4. une longueur pour exprimer par exemple la taille police (font-size) ou la marge (margin)

Avant de traiter en détail les styles, examinons comment les trois derniers types de valeurs s’écrivent.

Exprimer une couleur

technique exemples
Couleur nommée

Il en existe 140, voir par exemple www.colors.commutercreative.com ou w3schools

white, black, red, green, blue, gray, yellow, orange, marron, etc
Code couleur RGB complet

Code à 6 chiffres hexadécimaux précédés de #, codant la couleur par les trois composantes rouge, vert et bleue de la synthèse additive :

  • deux premiers chiffres code le rouge, de 0 à 255 (00 à FF en hexadécimal)
  • deux chiffres suivants pour le vert
  • deux derniers chiffres pour le bleu
  • #ff0000 : rouge pur
  • #0 noir, #ffffff blanc
  • #af2050 code 175 pour le rouge, 32 pour le vert et 80 pour le bleu
Code couleur RGB abrégé

Code à trois chiffres hexadécimaux où il faut répéter chaque chiffre pour obtenir le code complet (cela permet de coder 4096 couleurs, souvent bien suffisant pour un écran)

  • #fff = #ffffff
  • #a52 = #aa5522
Code RGB en décimal

Code RGB écrit en décimal sous la forme rgb(r, g, b) avec les trois valeurs r, g et b écrites en décimal

rgb(175, 32, 80) équivaut à #af2050
Code HSL

Modèle de couleur perceptif (voir Wikipédia) à trois composantes :

  • la teinte (Hue) du rouge au violet selon la longueur d’onde, une valeur de 0 à 360° sur une roue, qui va du rouge, au vert puis au jaune et enfin au bleu, très clairement présenté dans cet article
  • la saturation entre 0 (gris, pas de couleur) et 100% couleur au maximum
  • la luminance entre 0 (noir) et 100% (blanc), la couleur de base étant à 50%
hsl(340, 69%, 41%) équivaut à #af2050
Canal (ou couche) alpha

Transparence introduite en CSS 3 pour représenter la transparence (ou plutôt l’opacité !) entre 0 (transparent) et 1 (opaque). Utilisable avec rgb() et hsl en 4e valeur.

hsl(60, 100%, 50%, 0.5) est un jaune à moitié transparent

Donner une longueur

Les unités de longueur les plus courantes sont :

  1. unités physiques, à réserver à l’impression (donc pas vraiment recommandées pour un site web affiché sur un écran !), que sont pt (point), pc (pica), cm (centimètre), mm (millimètre), in (pouce) avec comme équivalence 1 in = 2.54 cm = 25.4 mm = 72 pt = 6 pc
  2. unité souvent qualifiée de « fixe », le pixel CSS abrégé en px ; il n’a pas en réalité la même taille physique selon les écrans, il ne correspond donc pas à un pixel réel mais il représente un point très fin visible par un utilisateur à une distance courante à son écran (articles instructifs : https://hacks.mozilla.org/2013/09/css-length-explained)
  3. unités relatives à la taille par défaut définie dans le navigateur (16px normalement), em et rem ; les deux sont des facteurs multiplicateurs par rapport à cette taille de base, mais em est relatif au parent alors que rem directement à cette taille (voir explication plus bas) ; on peut aussi utiliser un pourcentage sur le même principe
  4. nouvelles unités introduite en CSS 3 pour le développement mobile, relative à la taille du viewport (vh hauteur, vw largeur) c’est-à-dire de la fenêtre dans laquelle le navigateur affiche le document, en centième (50 vh signifie la moitié de la hauteur de la fenêtre)

Résumons-les dans un tableau :

px pixel
cm, mm, in unités physiques
pt, pc point et pica
em x fois la taille du parent
rem x fois la taille par défaut
% en pourcentage de la taille du parent
vh, vw, vmin, vmax relatif au viewport pour les maquettes responsives

Il y en a d’autres d’un usage quasi confidentiel, voir https://developer.mozilla.org/fr/docs/Web/CSS/length

font-size: 1cm; // pour l'impression, ne pas utiliser en général
font-size: 24px; // l'unité de base, à utiliser pour les maquettes figées
font-size: 2em; // à privilégier dans tous les cas car respecte le choix de l'utilisateur, indispendable pour les maquettes responsives
font-size: 300%; // idem (la nouvelle unité rem est encore mieux, en général)

 

Pointer vers une adresse

Il est parfois nécessaire de désigner une ressource, souvent pour une image. Le principe est le même qu’avec les ressources liées ou intégrées dans le code HTML, avec les adresses absolues ou relatives (voir la Leçon 5). Dans les styles, l’adresse s’écrit url(adresse) avec la possibilité de mettre des guillemets simples ou doubles, soit par exemple :

background-image: url(img/fond.png)
background-image: url('img/fond.png')
background-image: url("img/fond.png")

Entrons enfin dans le vif du sujet avec les styles d’usage courant.

Styles de caractères

Changer la police de caractère

Il y a quatre propriétés incontournables pour changer la police de caractère (fonte) d’un élément :

propriété description valeurs possibles
font-family
  • listes des polices à utiliser, séparées par une virgule
  • dans l’ordre, le navigateur applique la première police qu’il trouve sur l’ordinateur de l’utilisateur
  • le navigateur (qui reporte parfois le choix au système) est configuré pour associer à chaque police générique une police installé sur l’ordinateur
font-family:cursive,helvetica,'times new roman'
la valeur peut être un nom de police générique ou un nom de police particulière

liste des polices génériques :

serif police avec empâtement
sans-serif police sans empâtement
monospace police de taille fixe
cursive police manuscrite
fantasy police fantaisie
font-style A utiliser pour pencher un texte :

  • en italique classique, c’est-à-dire en utilisant une version spéciale de la police, si elle est fournie, ou à défaut en utilisant oblique)
  • oblique, penché par rotation des caractères, sans besoin d’une police italique spéciale
normal pas de style particulier
italic écriture en italique comme pour <i>
oblique écriture inclinée par rotation
font-weight
  • mise en gras par bold en utilisant une police spéciale si elle existe ou par renforcement dessiné
  • niveau de graisse entre 100 (fin) et 900 (épais) si la police le prévoit le navigateur faisant la correspondance entre l’échelle à 9 valeurs et les nuances de graisse proposées par la police (500 correspond en général à normal)
  • bolder et lighter, augmente ou réduit le niveau par rapport au parent, dans l’échelle 100..900
normal graisse normale, pas de mise en gras
bold gras
bolder plus gras par rapport au parent
lighter moins gras par rapport au parent
100..900 Exemple avec la police Open Sans qui a 5 nuances de graisse :

100 400 700
200 500 800
300 600 900
font-size Taille de la police de caractère Unité de longueur

La valeur par défaut est celle définie par l’utilisateur dans le navigateur, en principe 16px

Ces propriétés sont souvent appliquées à l’élément body pour que tout le document soit impacté.

Utiliser une police spéciale

Pour sortir des familles générique de police, vous pouvez déclarer une fonte particulière dans font-family, mais l’utilisateur final doit l’avoir installée sur son ordinateur. Sinon, la police par défaut sera utilisée.

Comment alors personnaliser et embellir le site avec une fonte particulière ? Il faudrait que le navigateur puisse récupérer la police juste pour afficher la page.

Ce mécanisme existe grâce à la version 3 des CSS.  Nous pouvons intégrer une police directement dans une page en fournissant le fichier de fonte dans un format reconnu par le navigateur, par exemple ttf (TrueType Font), otf (OpenTypeFont) ou svg (voir w3schools.com pour la liste des formats, ou encore cet article). Il faut soit importer une police qui se trouve sur un autre serveur, notamment les Google Fonts avec @import ou un simple link (voir le fichier d’exemple fonts.html ou ce tutoriel), soit l’intégrer au site. Pour cela, les étapes à réaliser sont :

  1. télécharger le fichier de police au format otf par exemple, le plus commun
  2. placer ce fichier dans l’arborescence de votre site, à la racine ou dans un sous dossier fonts si vous en avez plusieurs (inutile ici d’installer la police dans le système, l’important est de l’envoyer à tous les navigateurs qui appelle votre site)
  3. intégrer la police dans les styles de votre page qui doit l’utiliser (voir fonts.html pour un exemple détaillé)
TypeNomTaille

ttf
OvertheRainbow 46.4k

zip
Company 467.6k

html
Fonts 1.9k
Télécharger

Changer la couleur du texte

propriété description valeurs possibles ou exemple
color La couleur du texte Couleur nommée, RGB ou HSL
background-color La couleur du fond valable pour du texte (balise <span>, <b>, <a>, etc) mais aussi pour des blocs (<h1>, <p>, etc).
<strong style="background-color: yellow">surligné</strong>

surligné

Autres effets touchant les caractères

Voici quelques effets qui touchent au souligné, à l’espacement entre les mots ou les lettres et à la mise en majuscule.

propriété description valeurs possibles
text-decoration « Décoration » du texte
none pas de décoration
underline souligné
overline surligné
line-through barré
word-spacing, letter-spacing espacement entre les mots et entre les caractères, en unité de longueur (voir font-size)
<span style="letter-spacing:4px>La petite maison</span>

La petite maison

<span style="word-spacing:2em>La petite maison</span>

La petite maison

text-transform Mise en majuscule A partir du texte : la touR eiffeL

none la touR eiffeL
capitalize la touR eiffeL
uppercase la touR eiffeL
lowercase la touR eiffeL
white-spacing Définition de l’interprétation des espaces et des retours à la ligne, différentes valeurs voir MDN pour le détail
normal espaces, tabulations et retour à la ligne regroupés en un seul espace, le texte va automatiquement à la ligne
nowrap comme normal sauf que le texte ne va pas automatiquement à la ligne
pre effet appliqué à la balise pre, tous les espaces, tabulation et retour à la ligne du code sont restitués
pre-wrap comme pre avec en plus un retour à la ligne automatique du texte
pre-line ne restitue que les retours à la ligne (les espaces sont reroupés en un seul) avec en plus un retour à la ligne automatique du texte

Exercice 1

Reprenez la page de l’exercice 1 de la leçon 6 ou utilisez le fichier fourni.

TypeNomTaille

zip
Company 467.6k

Vous devez introduire des styles directement dans le code HTML (ceux qui déjà ont la chance de connaître les feuilles CSS peuvent les utiliser pour alléger le code) pour obtenir ce résultat :

Voici les styles à appliquer :

  1. Le fond de la page à une couleur particulière autre que blanc, vous prenez la couleur que vous voulez
  2. le bloc de titre a aussi une couleur spéciale, différente de celle du fond, selon votre goût
  3. le titre est écrit en grand (par exemple 50 pixels) en fonte cursive et avec une couleur qui le rend bien lisible
  4. le bloc de titre (les logos et le titre) doit être cliquable pour renvoyer vers une adresse quelconque, il faut pour cela ajouter un <a> dans le code HTML mais aussi, pas souci esthétique, enlever le souligné du lien

Styles de paragraphe

Ces styles concernent les paragraphes au sens très général, pas seulement la balise <p>. Ils touchent un bloc de texte fait de plusieurs lignes, selon la largeur de la fenêtre.

Espacer un paragraphe avec le contenu autour

La marge permet de réaliser cet espacement. Abordée ici du point de vue du paragraphe, nous verrons à la leçon suivante que cette propriété concernent tous les blocs

propriété description valeur par défaut
margin-top
margin-bottom
margin-left
margin-right
margin
  • marges avec le contenu respectivement en haut, en bas, à gauche et à droite
  • version abrégée margin qui a trois formes :
    • margin m : la même valeur pour les quatre marges
    • margin v h : la 1er valeur pour la marge verticale (haut et bas), la 2e valeur pour la marge horizontale (gauche et droite)
    • margin tp rg bt lf : quatre valeurs dans l’ordre pour les marges haute, droite, basse et gauche
0

Quelques exemples de déclarations de marge :

margin-top: 10px; /* marge haute de 10 pixels */
margin: 1%; /* toutes les marges sont à 1% de la taille du conteneur */
margin: 10px 1%; /* 10px en haut et en bas, 1% à droite et à gauche */

/* équivaut aux quatre directives qui suivent */
margin: 0 20px 5px 30px;

margin-top: 0;
margin-right: 20px;
margin-bottom: 5px;
margin-left: 30px;

Centrer horizontalement et verticalement

Dans ce leçon d’initiation aux styles, nous traitons du contenu textuel avec des styles que je qualifie de styles de caractère ou de paragraphe. Plus précisément, ce contenu recouvre :

  1. le texte brut mis dans une balise quelconque, par exemple un dans un <p>
  2. le texte mis dans une balise de mise en forme comme <i>, <b>, etc
  3. les images
  4. les liens <a>

Tous ces éléments s’affichent en suivant le fameux « flux » HTML, c’est-à-dire en ligne de gauche à droite (ce sens peut toutefois être inversé), puis vers le bas selon la largeur de la fenêtre du navigateur. Il n’y a de balise qui provoque implicitement un retour à la ligne, si ce n’est <br>.

  • <h1 style="font-size:4rem; font-weight: normal">
       <img src="tree-logo_opt.svg" style="height:6rem"/>
       <a href="www.w3c.org">wXyz</a>
       <span style="font-size:2rem">(company)</span>
    </h1>

Toutes les autres balises sont qualifiées de « bloc », comme <p>, <h1>, <section>, etc. Visuellement elle s’affiche dans un rectangle qui prend toute la largeur de la page ce qui provoque un retour à la ligne avant et après. Ce principe sera amplement traité dans la leçon suivante.

Comment centrer horizontalement un contenu textuel ?

Il faut une balise conteneur par exemple un <p> ou <h*> qui a pour enfant du texte, des images et/ou des liens. Pour que tout ce beau contenu soit centré, le style text-align est là avec text-align:center appliqué à cette balise conteneur.

propriété description valeurs possibles
text-align détermine la position de tout le contenu en ligne d’un élément bloc Les valeurs communes sont :

center texte centré
left texte à gauche
right texte à droite
justify
justify-all
texte justifié en justifiant aussi la dernière ligne si justify-all

D’autres valeurs sont plus confidentielles et concernent le sens d’écriture donné par l’attribut direction (voir MDN).

Comment aligner verticalement les éléments textuels ?

L’alignement vertical du texte, ou de tout élément en ligne comme une image, s’appuie sur différentes hauteurs remarquables représentées par ce schéma :

Notons aussi que la taille de police définie par font-size correspond à une hauteur de caractère. En pixel (px) ou en taille relative (em), la taille correspond à la hauteur des plus haut caractères, en tenant des lettre haute comme « b » et basse comme « p ».

Les valeurs données à droite du schéma sont les valeurs possibles pour la propriété CSS vertical-align. Cette propriété s’applique à un élément en ligne (et non au conteneur bloc comme pour text-align !). Par défaut le texte est alignés au niveau de la ligne de base et les images au bas.

L’alignement doit se comprendre comme un placement de l’élément qui reçoit vertical-align par rapport à tous le texte qui reste par défaut en baseline. Plutôt que d’expliquer péniblement comment fonctionne l’alignement avec ces différentes valeurs, voyons les résultats possibles sur l’exemple précédent. La propriété vertical-align est appliquée à l’image et au petit texte « (company) », donc il faut comparer l’image par rapport à « wXyz » et « (company) » par rapport à « wXyz » qui ne se reçoit pas d’alignement. Pour bien voir certaines subtilités, nous avons colorer le fond du texte « wXyz » (sa « boîte ») et ajouté deux caractères « plein » █ qui est le plus haut possible.

propriété description
baseline

valeur par défaut

  • image aligné sur le bas
  • texte aligné sur la ligne de base

 wXyz█ (company)█

middle

  • image et texte alignés au milieu

wXyz█ (company)█

top

  •  image et texte alignés en haut

wXyz█ (company)█

bottom

  • image et texte alignés en bas

wXyz█ (company)█

sub

  • texte mis en exposant (son milieu aligné sur la ligne de base)

 wXyz█ (company)█

super

  • texte placé en exposant

 wXyz█ (company)█

text-top

  • alignement des boites sur le haut du conteneur

wXyz█ (company)█

text-bottom

  • alignement des boites sur le bas du conteneur

wXyz█ (company)█

Indenter et définir l’interligne

propriété description valeur par défaut
text-indent indentation (espacement à gauche) de la première ligne 0
line-height
  • interligne (espacement entre deux lignes pour tout le paragraphe)
  • valeur de longueur (px, em, %, etc) ou sans unité qui désigne un facteur multiplicateur par rapport à la police de l’élément
  • la valeur normal est possible, elle dépend du navigateur et vaut en général 1.2, soit 1.2 fois plus grand que la hauteur prévue par la police qui s’applique
normal

Styles de liste

Nous pouvons aussi changer l’aspect des listes en appliquant ces propriétés à un élément <ul> ou <ol> :

propriété description valeurs possibles
list-style-type « Décoration » du texte Pour une liste à puce <ul> :

disc disque plein
  • point1
  • point2
circle rond creux
  • point1
  • point2
square carré
  • point1
  • point2
none pas de de puce
  • point1
  • point2

Pour une liste ordonnée <ol> :

decimal nombre décimal
  1. point1
  2. point2
lower-alpha lettre en minuscule
  1. point1
  2. point2
upper-alpha lettre en majuscule
  1. point1
  2. point2
lower-roman chiffre romain en minuscule
  1. point1
  2. point2
upper-roman chiffre romain en majuscule
  1. point1
  2. point2
none pas de numéro
  1. point1
  2. point2
list-style-image image pour les puces, son adresse est donnée par l’une des trois syntaxes :

  • url(adresse)
  • url(‘adresse’)
  • url(« adresse »)
<ul style="list-style-image:url(/img/puce.png)">
</ul>


<ul style="list-style-image:url(http://pixels.org/puce.jpg)">
</ul>
list-style-position
  • indique si la puce ou le numéro est placé dans l’élément qui le suit, représenté par un <li>
  • ci-contre dans l’exemple, l’élément <li> est encadré en rouge
inside
  • point 1
  • point 2
outside
  • point 1
  • point 2
list-style
  • écriture réduite pour, dans cet ordre, list-style-type, list-style-image, list-style-position
  • n’importe laquelle de ces valeurs peut être omise, ce qui fait qu’on peut donner une, deux ou trois valeurs (voir exemples ci-contre)
list-style: none;

list-style: circle inside;

list-style: url(rond.jpg);

list-style: url(rond.jpg) outside;

list-style: square url(rond.jpg);

/* etc, il y a plein de possibilités ! */

 

Exercice 2

Reprenez la page de l’exercice 1 de la leçon 6 ou utilisez le fichier fourni.

TypeNomTaille

zip
Company 467.6k

Vous devez introduire des styles directement dans le code HTML (ceux qui déjà ont la chance de connaître les feuilles CSS peuvent les utiliser pour alléger le code) pour obtenir ce résultat :

Voici les styles à appliquer :

  1. L’entête est centré horizontalement, avec les deux images et le titre
  2. dans l’entête, le titre est centré verticalement par rapport aux images qui l’entoure
  3. les paragraphes ont un alinéa
  4. l’interligne de ces paragraphes est d’environ 30 pixels
A retenir

 

Ressources utiles
  • site de référence pratique, facile à lire et permettant de tester le code, résumant l’essentiel mais n’étant pas exhaustif : w3schools avec une partie tutoriel et une partie référence (en anglais !)
  • la référence pour tout savoir sur une balise, un attribut, une propriété CSS : MDN web docs
Téléchargements
TypeNomTaille

ttf
OvertheRainbow 46.4k

zip
Company 467.6k

html
Fonts 1.9k
Télécharger

Pour aller plus loin

Laisser un commentaire