Cours HTML Css
Cours HTML Css
Du HTML à l'écran
HTML et CSS sont deux « langues » qu'il faut savoir parler pour créer des sites web. C'est le navigateur web qui
fera la traduction entre ces langages informatiques et ce que vous verrez s'afficher à l'écran.
Les rôles de HTML et CSS
• HTML (HyperText Markup Language) : il a fait son apparition dès 1991 lors du lancement du Web.
Son rôle est de gérer et organiser le contenu. C'est donc en HTML que vous écrirez ce qui doit être
affiché sur la page : du texte, des liens, des images… Vous direz par exemple : « Ceci est mon titre, ceci
est mon menu, voici le texte principal de la page, voici une image à afficher, etc. ».
• CSS (Cascading Style Sheets, aussi appelées Feuilles de style) : le rôle du CSS est de gérer l'apparence
de la page web (agencement, positionnement, décoration, couleurs, taille du texte…). Ce langage est
venu compléter le HTML en 1996.
Vous pouvez très bien créer un site web uniquement en HTML, mais celui-ci ne sera pas très beau : l'information
apparaîtra « brute ». C'est pour cela que le langage CSS vient toujours le compléter.
Pour vous donner une idée, la figure suivante montre ce que donne la même page sans CSS puis avec le CSS.
Le HTML définit le contenu (comme vous pouvez le voir, c'est brut de décoffrage !). Le CSS permet, lui,
d'arranger le contenu et de définir la présentation : couleurs, image de fond, marges, taille du texte…
Comme vous vous en doutez, le CSS a besoin d'une page HTML pour fonctionner. C'est pour cela que nous
allons d'abord apprendre les bases du HTML avant de nous occuper de la décoration en CSS.
L'éditeur de texte
Il existe effectivement de nombreux logiciels dédiés à la création de sites web. Mais, je vous rassure, vous
n'aurez pas à débourser un seul centime. Eh oui, accrochez-vous bien parce qu'il suffit de… Bloc-Notes !
Incroyable mais vrai : on peut tout à fait créer un site web uniquement avec Bloc-Notes, le logiciel d'édition de
texte intégré par défaut à Windows.
Il y a cependant des logiciels plus puissants aujourd'hui et personne n'utilise vraiment Bloc-Notes. On peut
classer ces logiciels de création de site web en deux catégories :
Vous l'aurez compris, je vais vous inviter à utiliser un éditeur de texte dans ce cours.
De nombreux éditeurs de texte fonctionnent que vous soyez sous Windows, Mac OS X ou Linux (ils sont
disponibles partout).
Sous Windows
Voici quelques logiciels que vous pouvez essayer sous Windows si vous voulez en tester plusieurs :
• Sublime Text;
• Notepad++ ;
• Brackets ;
• jEdit ;
• PSpad ;
• ConTEXT ;
• … et bien d'autres si vous recherchez « Éditeur de texte » sur le Web.
Sous Mac OS X
Je recommande la plupart des mêmes logiciels car ils sont multi-plateformes. Voici une petite sélection :
• Sublime Text ;
• Brackets ;
• jEdit ;
• Smultron ;
• TextWrangler.
Sous Linux
Les éditeurs de texte sont légion sous Linux. Certains d'entre eux sont installés par défaut, d'autres peuvent être
téléchargés facilement via le centre de téléchargement (sous Ubuntu notamment) ou au moyen de commandes
comme apt-get et aptitude. Voici quelques logiciels que vous pouvez tester :
• Sublime Text ;
• Brackets ;
• gEdit ;
• Kate ;
• vim ;
• Emacs ;
• jEdit.
En résumé
• Le Web a été inventé par Tim Berners-Lee au début des années 1990.
• Pour créer des sites web, on utilise deux langages informatiques : o HTML : permet d'écrire et
organiser le contenu de la page (paragraphes, titres…) ; o CSS : permet de mettre en forme la page
(couleur, taille…).
• Il y a eu plusieurs versions des langages HTML et CSS. Les dernières versions sont HTML5 et CSS3.
• Le navigateur web est un programme qui permet d'afficher des sites web. Il lit les langages HTML et
CSS pour savoir ce qu'il doit afficher.
• Il existe de nombreux navigateurs web différents : Google Chrome, Mozilla Firefox, Internet Explorer,
Safari, Opera… Chacun affiche un site web de manière légèrement différente des autres navigateurs.
• Dans ce cours, nous allons apprendre à utiliser les langages HTML et CSS. Nous travaillerons dans un
programme appelé « éditeur de texte » (Sublime Text, Notepad++, jEdit, vim…).
Allez, mettons-nous en situation ! Comme je vous l'ai dit, nous allons créer notre site dans un éditeur de texte.
Vous avez dû en installer une suite à mes conseils dans le premier chapitre : qu'il s'appelle Sublime Text,
Notepad++, Brackets, jEdit, vim, TextWrangler… peu importe. Ces logiciels ont un but très simple : vous
permettre d'écrire du texte !
Bon, qu'est-ce qu'on fait maintenant ? Qu'est-ce qu'on écrit sur cette feuille blanche (euh... noire) ?
On va faire un petit essai. Je vous invite à écrire ce qui vous passe par la tête, comme moi à la figure suivante.
Du texte dans Sublime Text
Vous pouvez écrire les mêmes phrases que moi ou ce que vous voulez ; le but est d'écrire quelque chose.
Maintenant, enregistrons ce fichier. Pour cela, c'est très simple : comme dans tous les programmes, vous avez un
menu Fichier > Enregistrer (ou File > Save en anglais) Une boîte de dialogue vous demande où
enregistrer le fichier et sous quel nom. Enregistrez-le où vous voulez. Donnez au fichier le nom que vous voulez,
en terminant par .html, par exemple [Link], comme indiqué à la figure suivante.
Je vous recommande de créer un nouveau dossier dans vos documents qui contiendra les fichiers de votre
site. Pour ma part j'ai créé un dossier test dans lequel j'ai mis mon fichier [Link].
Ouvrez maintenant l'explorateur de fichiers dans le dossier où vous avez enregistré votre page (l'Explorateur sous
Windows ou le Finder sous Mac). Vous y verrez le fichier que vous venez de créer :
Le fichier dans l'explorateur
L'icône qui représente le fichier dépend de votre navigateur web par défaut en général. Vous pouvez y voir une
icône de Firefox, de Chrome... ou un aperçu comme ici. N'y prêtez pas attention. Faites simplement un double-
clic sur ce fichier et… votre navigateur s'ouvre et affiche le texte que vous avez écrit.
Cela ne marche pas bien, on dirait ! Tout le texte s'affiche sur la même ligne alors qu'on avait écrit deux
lignes de texte différentes !?
Les balises et leurs attributs
Les balises
On distingue deux types de balises : les balises en paires et les balises orphelines.
Elles s'ouvrent, contiennent du texte, et se ferment plus loin. Voici à quoi elles ressemblent :
On distingue une balise ouvrante (<titre>) et une balise fermante (</titre>) qui indique que le titre se
termine. Cela signifie pour l'ordinateur que tout ce qui n'est pas entre ces deux balises… n'est pas un titre.
Ceci n'est pas un titre <titre>Ceci est un titre</titre> Ceci n'est pas un
titre
Ce sont des balises qui servent le plus souvent à insérer un élément à un endroit précis (par exemple une image).
Il n'est pas nécessaire de délimiter le début et la fin de l'image, on veut juste dire à l'ordinateur « Insère une
image ici ».
<image />
Notez que le / de fin n'est pas obligatoire. On pourrait écrire seulement <image>. Néanmoins, pour ne pas
les confondre avec le premier type de balise, les webmasters recommandent de rajouter ce / (slash) à la fin
des balises orphelines. Vous me verrez donc mettre un / aux balises orphelines et je vous recommande de
faire de même, c'est une bonne pratique.
Les attributs
Les attributs sont un peu les options des balises. Ils viennent les compléter pour donner des informations
supplémentaires. L'attribut se place après le nom de la balise ouvrante et a le plus souvent une valeur, comme
ceci :
<balise attribut="valeur">
À quoi cela sert-il ? Prenons la balise <image /> que nous venons de voir. Seule, elle ne sert pas à grand-
chose. On pourrait rajouter un attribut qui indique le nom de l'image à afficher :
L'ordinateur comprend alors qu'il doit afficher l'image contenue dans le fichier [Link].
Reprenons notre éditeur de texte (dans mon cas Sublime Text). Je vous invite à écrire ou à copier-coller le code
source dans un éditeur. Ce code correspond à la base d'une page web en HTML5 :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Titre</title>
</head>
<body>
</body>
</html>
Le doctype
<!DOCTYPE html>
La balise </html>
<html>
</html>
C'est la balise principale du code. Elle englobe tout le contenu de votre page. Comme vous pouvez le voir, la
balise fermante </html> se trouve tout à la fin du code !
• L'en-tête <head> : cette section donne quelques informations générales sur la page comme son titre,
l'encodage (pour la gestion des caractères spéciaux), etc. Cette section est généralement assez courte.
• Le corps <body> : c'est là que se trouve la partie principale de la page. Tout ce que nous écrirons ici
sera affiché à l'écran. C'est à l'intérieur du corps que nous écrirons la majeure partie de notre code.
L'encodage (charset)
C'est lui qui détermine comment les caractères spéciaux vont s'afficher (accents, idéogrammes chinois et
japonais, caractères arabes, etc.).
<title>
Le titre ne s'affiche pas dans votre page mais en haut de celle-ci (souvent dans l'onglet du navigateur).
Enregistrez votre page web et ouvrez-la dans votre navigateur. Vous verrez que le titre s'affiche dans l'onglet,
comme sur la figure suivante.
Les commentaires
Nous avons appris à créer notre première vraie page HTML dans ce chapitre. Avant de terminer, j'aimerais vous
présenter le principe des commentaires.
Un commentaire en HTML est un texte qui sert simplement de mémo. Il n'est pas affiché, il n'est pas lu par
l'ordinateur, cela ne change rien à l'affichage de la page.
Eh bien si !
Cela sert à vous et aux personnes qui liront le code source de votre page. Vous pouvez utiliser les commentaires
pour laisser des indications sur le fonctionnement de votre page.
Quel intérêt ? Cela vous permettra de vous rappeler comment fonctionne votre page si vous revenez sur votre
code source après un long moment d'absence. Ne rigolez pas, cela arrive à tous les webmasters.
Insérer un commentaire
Un commentaire est une balise HTML avec une forme bien spéciale :
Vous pouvez le mettre où vous voulez au sein de votre code source : il n'a aucun impact sur votre page, mais
vous pouvez vous en servir pour vous aider à vous repérer dans votre code source (surtout s'il est long).
<!DOCTYPE html>
<html>
<head>
<!-- En-tête de la page -->
<meta charset="utf-8" />
<title>Titre</title>
</head>
<body>
<!-- Corps de la page -->
</body> </html>
Tout le monde peut voir vos commentaires… et tout votre code HTML !
Vous pouvez tester cette manipulation sur n'importe quel site web, cela marche ! Garanti à 100%. Cela s'explique
assez facilement : le navigateur doit obtenir le code HTML pour savoir ce qu'il faut afficher. Le code HTML de
tous les sites est donc public.
En résumé
• On utilise l'éditeur de texte (Sublime Text, Notepad++, jEdit, vim…) pour créer un fichier ayant
l'extension .html (par exemple : [Link]). Ce sera notre page web.
• Ce fichier peut être ouvert dans le navigateur web simplement en faisant un double-clic dessus.
• À l'intérieur du fichier, nous écrirons le contenu de notre page, accompagné de balises HTML.
• Les balises peuvent avoir plusieurs formes :
o <balise> </balise> : elles s'ouvrent et se ferment pour délimiter le contenu (début et fin
d'un titre, par exemple).
o <balise /> : balises orphelines (on ne les insère qu'en un seul exemplaire), elles permettent
d'insérer un élément à un endroit précis (par exemple une image).
• Les balises sont parfois accompagnées d'attributs pour donner des indications supplémentaires (exemple
: <image nom="[Link]" />).
• Une page web est constituée de deux sections principales : un en-tête (<head>) et un corps (<body>).
• On peut afficher le code source de n'importe quelle page web en faisant un clic droit puis en
sélectionnant Afficher le code source de la page.
Les paragraphes
La plupart du temps, lorsqu'on écrit du texte dans une page web, on le fait à l'intérieur de paragraphes. Le
langage HTML propose justement la balise <p> pour délimiter les paragraphes.
Comme je vous l'ai dit au chapitre précédent, on écrit le contenu du site web entre les balises
<body></body>. Il nous suffit donc de mettre notre paragraphe entre ces deux balises et nous aurons enfin
notre première vraie page web avec du texte !
Je reprends donc exactement le même code qu'au chapitre précédent et j'y ajoute mon paragraphe :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Paragraphes</title>
</head>
<body>
<p>Bonjour et bienvenue sur mon
site !</p>
</body> </html>
Mais ne nous arrêtons pas en si bon chemin. Nous allons voir maintenant quelque chose d'un peu particulier en
HTML : le saut de ligne. Cela paraît simple et pourtant, cela ne fonctionne pas vraiment comme dans un
traitement de texte habituel…
En HTML, si vous appuyez sur la touche Entrée, cela ne crée pas une nouvelle ligne comme vous en avez
l'habitude. Essayez donc ce code :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Essais de sauts de ligne</title>
</head>
<body>
<p>Bonjour et bienvenue sur mon site !
Ceci est mon premier test alors soyez indulgents s'il vous
plaît, j'apprends petit à petit comment cela marche.
Pour l'instant c'est un peu vide, mais revenez dans 2-3 jours
quand j'aurai appris un peu plus de choses, je vous assure que vous allez
être surpris !</p>
</body>
</html>
Tout le texte s'affiche sur la même ligne alors qu'on est bien allé à la ligne dans le code ! Taper frénétiquement
sur la touche Entrée dans l'éditeur de texte ne sert donc strictement à rien.
Comme vous devez vous en douter, il y a pourtant bien un moyen de faire des sauts de ligne en HTML.
En fait, si vous voulez écrire un deuxième paragraphe, il vous suffit d'utiliser une deuxième balise <p>. Votre
code HTML devrait donc être au final rempli de balises de paragraphe !
Un exemple :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Paragraphes</title>
</head>
<body>
<p>Bonjour et bienvenue sur mon site !
Ceci est mon premier test alors soyez indulgents s'il vous plaît,
j'apprends petit à petit comment cela marche. </p>
<p>Pour l'instant c'est un peu vide, mais revenez dans 2-3 jours
quand j'aurai appris un peu plus de choses, je vous assure que vous allez
être surpris ! </p>
</body>
</html>
Le résultat se trouve à la figure suivante.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Sauts de ligne</title>
</head>
<body>
<p>Bonjour et bienvenue sur mon site !<br />
Ceci est mon premier test alors soyez indulgents s'il vous plaît,
j'apprends petit à petit comment cela marche. </p>
<p>Pour l'instant c'est un peu vide, mais revenez dans 2-3 jours
quand j'aurai appris un peu plus de choses, je vous assure que vous allez
être surpris ! </p>
</body>
</html>
Maintenant qu'on sait écrire des paragraphes, voyons voir comment on crée des titres.
Les titres
Lorsque le contenu de votre page va s'étoffer avec de nombreux paragraphes, il va devenir difficile pour vos
visiteurs de se repérer. C'est là que les titres deviennent utiles.
En HTML, on est verni, on a le droit d'utiliser six niveaux de titres différents. Je veux dire par là qu'on peut dire
« Ceci est un titre très important », « Ceci est un titre un peu moins important », « Ceci est un titre encore moins
important », etc. On a donc six balises de titres différentes :
• <h1> </h1> : signifie « titre très important ». En général, on s'en sert pour afficher le titre de la page
au début de celle-ci.
• <h2> </h2> : signifie « titre important ».
• <h3> </h3> : pareil, c'est un titre un peu moins important (on peut dire un « sous-titre » si vous
voulez).
• <h4> </h4> : titre encore moins important.
• <h5> </h5> : titre pas important.
• <h6> </h6> : titre vraiment, mais alors là vraiment pas important du tout.
Attention : ne confondez pas avec la balise <title> ! La balise <title> affiche le titre de la page dans
la barre de titre du navigateur comme nous l'avons vu. Les titres <h1> et compagnie, eux, servent à créer
des titres qui seront affichés dans la page web.
Ne vous laissez pas impressionner par toutes ces balises. En fait, six niveaux de titres, c'est beaucoup. Dans la
pratique, personnellement, je n'utilise que les balises <h1>, <h2> et <h3>, et très rarement les autres (je n'ai
pas souvent besoin de six niveaux de titres différents). Votre navigateur affiche le titre très important en très
gros, le titre un peu moins important en un peu moins gros, etc.
Essayez de créer une page web avec des titres pour voir ce que cela donne :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Niveaux de titres</title>
</head>
<body>
<h1>Titre super important</h1>
<h2>Titre important</h2>
<h3>Titre un peu moins important (sous-titre)</h3>
Allez, je vous donne un exemple d'utilisation des titres dans une page web (vous allez voir que je ne me sers pas
de toutes les balises) :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Présentation d'OpenClassrooms</title>
</head>
<body>
<h1>Bienvenue sur OpenClassrooms !</h1>
Rendez-vous sur les forums ! Vous y découvrirez que vous n'êtes pas le
seul dans ce cas et vous trouverez très certainement quelqu'un qui vous
aidera aimablement à résoudre votre problème.</p>
</body> </html>
Nous ferons tout cela lorsque nous apprendrons le CSS (dès la deuxième partie du cours). Il faut savoir que
<h1> ne signifie pas « Times New Roman, taille 16 pt », mais « Titre important ».
Grâce au langage CSS, vous pourrez dire « Je veux que mes titres importants soient centrés, rouges et soulignés
». Pour le moment, en HTML, nous ne faisons que structurer notre page. Nous rédigeons le contenu avant de
nous amuser à le mettre en forme.
La mise en valeur
Au sein de vos paragraphes, certains mots sont parfois plus importants que d'autres et vous aimeriez les faire
ressortir. HTML vous propose différents moyens de mettre en valeur le texte de votre page.
Mettre un peu en valeur
Pour mettre un peu en valeur votre texte, vous devez utiliser la balise <em> </em>.
Son utilisation est très simple : encadrez les mots à mettre en valeur avec ces balises et c'est bon ! Je reprends un
peu l'exemple de tout à l'heure et j'y mets quelques mots en évidence :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Emphase</title>
</head>
<body>
<p>Bonjour et bienvenue sur mon site !<br />
Ceci est mon premier test alors <em>soyez indulgents</em> s'il vous
plaît, j'apprends petit à petit comment cela marche.</p>
</body>
</html>
Comme vous pouvez le voir, utiliser la balise <em> a pour conséquence de mettre le texte en italique. En fait,
c'est le navigateur qui choisit comment afficher les mots. On lui dit que les mots sont assez importants et, pour
faire ressortir cette information, il change l'apparence du texte en utilisant l'italique.
Pour mettre un texte bien en valeur, on utilise la balise <strong> qui signifie « fort », ou « important » si vous
préférez. Elle s'utilise exactement de la même manière que <em> :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Forte emphase</title>
</head>
<body>
<p>Bonjour et bienvenue sur mon site !<br />
Ceci est mon premier test alors <strong>soyez indulgents</strong> s'il
vous plaît, j'apprends petit à petit comment cela marche.</p>
</body>
</html>
Vous voyez sûrement le texte s'afficher en gras. Là encore, le gras n'est qu'une conséquence. Le navigateur a
choisi d'afficher en gras les mots importants pour les faire ressortir davantage.
La balise <strong> ne signifie pas « mettre en gras » mais « important ». On pourra décider plus tard, en CSS,
d'afficher les mots « importants » d'une autre façon que le gras si on le souhaite.
Marquer le texte
La balise <mark> permet de faire ressortir visuellement une portion de texte. L'extrait n'est pas forcément
considéré comme important mais on veut qu'il se distingue bien du reste du texte. Cela peut être utile pour faire
ressortir un texte pertinent après une recherche sur votre site par exemple.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Marquage du texte</title>
</head>
<body>
<p>Bonjour et bienvenue sur mon site !<br />
Ceci est mon premier test alors <mark>soyez indulgents</mark> s'il vous
plaît, j'apprends petit à petit comment cela marche.</p>
</body>
</html>
Par défaut, <mark> a pour effet de surligner le texte. On pourra changer l'affichage en CSS (décider de surligner
dans une autre couleur, d'encadrer le texte, etc.). C'est le même principe que ce que je vous disais pour les balises
précédentes : elles indiquent le sens des mots et non pas comment ceux-ci doivent s'afficher.
Je vais peut-être vous sembler un peu lourd mais il est très important qu'on se comprenne bien car les débutants
font souvent la même grosse erreur à ce stade. Ils ont vu les balises <em>, <strong>, <mark>… et ils se
disent : « Chouette, j'ai découvert comment mettre en italique, en gras et comment surligner du texte en HTML !
».
Et pourtant… ce n'est pas à cela que servent ces balises ! Je sais, je sais, vous allez me dire « Oui mais quand
j'utilise <strong> le texte apparaît en gras, donc c'est pour mettre en gras. » et pourtant, c'est une erreur de
croire que cette balise sert à cela.
Le rôle des balises est d'indiquer le sens du texte. Ainsi, <strong> indique à l'ordinateur « Ce texte est
important
Tout cela se fait en CSS. Souvenez-vous :
Nous verrons le CSS plus loin, pour l'instant nous nous concentrons sur le HTML et ses balises, qui ont chacune
Les listes nous permettent souvent de mieux structurer notre texte et d'ordonner nos informations. Nous
allons découvrir ici deux types de listes :
• Fraises
• Framboises
• Cerises
C'est un système qui nous permet de créer une liste d'éléments sans notion d'ordre (il n'y a pas de « premier » ni
de « dernier »). Créer une liste non ordonnée est très simple. Il suffit d'utiliser la balise <ul> que l'on referme un
peu plus loin avec </ul>. Commencez donc à taper ceci :
<ul></ul>
Et maintenant, voilà ce qu'on va faire : on va écrire chacun des éléments de la liste entre deux balises
<li></li>. Chacune de ces balises doit se trouver entre <ul> et </ul>. Vous allez comprendre de suite
avec cet exemple :
<ul>
<li>Fraises</li>
<li>Framboises</li>
<li>Cerises</li> </ul>
Notez que la liste doit être placée à l'intérieur de <body></body>. À partir de maintenant, je ne mets pas
tout le code de la page pour rester lisible.
Vous pouvez mettre autant d'éléments que vous voulez dans la liste à puces, vous n'êtes pas limités à trois
éléments.
Et voilà, vous savez créer une liste à puces ! Pas si dur une fois qu'on a compris comment imbriquer les balises.
Pour ceux qui ont besoin de faire des listes complexes, sachez que vous pouvez imbriquer des listes à puces
(créer une liste à puces dans une liste à puces). Si vous voulez faire ça, ouvrez une seconde balise <ul>à
l'intérieur d'un élément <li></li>.
Si vous fermez les balises dans le bon ordre, vous n'aurez pas de problème. Attention néanmoins, cette
technique est un peu compliquée à maîtriser.
Liste ordonnée
Une liste ordonnée fonctionne de la même façon, seule une balise change : il faut remplacer <ul></ul> par
<ol></ol>.
À l'intérieur de la liste, on ne change rien : on utilise toujours des balises <li></li> pour délimiter les
éléments.
L'ordre dans lequel vous placez les éléments de la liste est important. Le premier <li></li> sera l'élément
n° 1, le second sera le n°2 etc…
Comme c'est particulièrement intuitif, je vous laisse admirer la simplicité de cet exemple (résultat à la figure
suivante) :
<h1>Ma journée</h1>
<ol>
<li>Je me lève.</li>
<li>Je mange et je bois.</li>
<li>Je retourne me coucher.</li>
</ol>
Par rapport à l'exemple précédent, tout ce qu'on a eu à changer est donc la balise <ol>.
Pour information, il existe un troisième type de liste, beaucoup plus rare : la liste de définitions. Elle fait
intervenir les balises <dl> (pour délimiter la liste), <dt> (pour délimiter un terme) et <dd> (pour délimiter
la définition de ce terme).
En résumé
• Le HTML comporte de nombreuses balises qui nous permettent d'organiser le texte de notre page. Ces
balises donnent des indications comme « Ceci est un paragraphe », « Ceci est un titre », etc.
• Les paragraphes sont définis par la balise <p> </p> et les sauts de ligne par la balise <br />.
• Il existe six niveaux de titre, de <h1> </h1> à <h6> </h6>, à utiliser selon l'importance du titre.
• On peut mettre en valeur certains mots avec les balises <strong>, <em> et <mark>.
• Pour créer des listes, on doit utiliser la balise <ul> (liste à puces, non ordonnée) ou <ol> (liste
ordonnée). À l'intérieur, on insère les éléments avec une balise <li> pour chaque item.
Comme vous le savez, un site web est composé de plusieurs pages. Comment faire pour aller d'une page vers une
autre ? À l'aide de liens pardi ! Dans ce chapitre, nous allons justement apprendre à créer des liens entre nos
pages.
Je suppose que chacun d'entre vous sait ce qu'est un lien : il s'agit d'un texte sur lequel on peut cliquer pour se
rendre sur une autre page.
On peut faire un lien d'une page [Link] vers une page [Link], mais on peut aussi faire un lien vers un autre
site (par exemple, [Link] Dans les deux cas, nous allons voir que le
fonctionnement est le même.
Il est facile de reconnaître les liens sur une page : ils sont écrits d'une façon différente (par défaut, en bleu et
soulignés) et un curseur en forme de main apparaît lorsqu'on pointe dessus.
Je vous propose d'essayer de coder le lien qui amène vers OpenClassrooms, comme à la figure suivante.
Pour faire un lien, la balise que nous allons utiliser est très simple à retenir : <a>. Il faut cependant lui ajouter un
attribut, href, pour indiquer vers quelle page le lien doit conduire.
Par exemple, le code ci-dessous est un lien qui amène vers OpenClassrooms, situé à l'adresse
[Link] :
<a href="[Link]
Nous allons placer ce lien au sein d'un paragraphe. Voici donc comment reproduire l'exemple de la figure
précédente :
Par défaut, le lien s'affiche en bleu souligné. Si vous avez déjà ouvert la page, le lien s'affiche en violet.
Nous verrons comment changer cette apparence lorsque nous étudierons le CSS.
Si vous voulez faire un lien vers un autre site, il suffit donc de copier son adresse (on parle d'URL) en [Link]
Notez que certains liens commencent parfois par https:// (sites sécurisés, comme OpenClassrooms) ou
d'autres préfixes ([Link]
Si vous faites un lien vers un site qui comporte une adresse un peu bizarre avec des &, comme :
[Link] vous devrez remplacer tous les « & » par «
& » dans votre lien comme ceci : [Link]
Vous ne verrez pas la différence, mais cela est nécessaire pour avoir une page web correctement construite
en HTML5.
Les liens que nous venons de voir sont appelés liens absolus car on indique l'adresse complète. Nous allons
maintenant voir que l'on peut écrire les liens d'une façon un peu différente, ce qui va nous être utile pour faire des
liens entre les pages de notre site.
Nous venons d'apprendre à créer des liens vers des sites existants. Mais je suis sûr que vous aimeriez faire des
liens entre les différentes pages de votre site, non ?
Oui, justement, comment je fais pour faire un lien vers une autre page de mon site ? Je ne connais pas son
adresse en [Link] je commence à peine à créer mon site là ! Je n'ai pas d'adresse.
En effet, pour le moment, vous êtes en train de créer votre site sur votre ordinateur. Vous êtes le seul à pouvoir le
voir et il n'a pas encore « d'adresse web » qui commence en http:// comme la plupart des sites.
Heureusement, cela ne va pas nous empêcher de travailler.
Pour commencer, nous allons créer deux fichiers correspondant à deux pages HTML différentes. Comme je suis
très inspiré, je vous propose de les appeler [Link] et [Link]. Nous aurons donc ces deux fichiers
sur notre disque dans le même dossier (figure suivante).
Plusieurs fichiers HTML dans un même dossier
Comment faire un lien de la page 1 vers la page 2, sans avoir d'adresse en http:// ? En fait, c'est facile : si les
deux fichiers sont situés dans le même dossier, il suffit d'écrire comme cible du lien le nom du fichier vers lequel
on veut amener. Par exemple : <a href="[Link]">. On dit que c'est un lien relatif.
Voici le code que nous allons utiliser dans nos fichiers [Link] et [Link].
[Link]
[Link]
La page 2 (page d'arrivée) affichera simplement un message pour indiquer que l'on est bien arrivé sur la page 2 :
Les choses se corsent un petit peu si les pages sont situées dans des dossiers différents. Idéalement, elles ne
devraient pas être trop loin l'une de l'autre (dans un sous-dossier par exemple).
Imaginons que [Link] se trouve dans un sous-dossier appelé contenu, comme à la figure suivante.
Le fichier [Link] se trouve à l'intérieur du dossier contenu
<a href="contenu/[Link]">
<a href="contenu/autredossier/[Link]">
Et si le fichier ne se trouve pas dans un sous-dossier mais dans un dossier « parent », on fait comment ?
Si votre fichier cible est placé dans un dossier qui se trouve « plus haut » dans l'arborescence, il faut écire deux
points comme ceci :
<a href="../[Link]">
Résumé en images
Les liens relatifs ne sont pas bien compliqués à utiliser une fois qu'on a compris le principe. Il suffit de regarder
dans quel « niveau de dossier » se trouve votre fichier cible pour savoir comment écrire votre lien. La figure
suivante fait la synthèse des différents liens relatifs possibles.
Les différents liens relatifs
Une ancre est une sorte de point de repère que vous pouvez mettre dans vos pages HTML lorsqu'elles sont très
longues.
En effet, il peut alors être utile de faire un lien amenant plus bas dans la même page pour que le visiteur puisse
sauter directement à la partie qui l'intéresse.
Pour créer une ancre, il suffit de rajouter l'attribut id à une balise qui va alors servir de repère. Ce peut être
n'importe quelle balise, un titre par exemple.
Utilisez l'attribut id pour donner un nom à l'ancre. Cela nous servira ensuite pour faire un lien vers cette ancre.
Par exemple :
<h2 id="mon_ancre">Titre</h2>
Ensuite, il suffit de créer un lien comme d'habitude, mais cette fois l'attribut href contiendra un dièse (#) suivi
du nom de l'ancre. Exemple :
Normalement, si vous cliquez sur le lien, cela vous amènera plus bas dans la même page (à condition que la page
comporte suffisamment de texte pour que les barres de défilement se déplacent automatiquement).
Voici un exemple de page comportant beaucoup de texte et utilisant les ancres (j'ai mis n'importe quoi dans le
texte pour remplir) :
<p>
Aller directement à la partie traitant de :<br />
<a href="#cuisine">La cuisine</a><br />
<a href="#rollers">Les rollers</a><br />
<a href="#arc">Le tir à l'arc</a><br />
</p>
<h2 id="cuisine">La cuisine</h2>
S'il ne se passe rien quand vous cliquez sur les liens, c'est qu'il n'y a pas assez de texte. Dans ce cas, vous pouvez
soit rajouter du blabla dans la page pour qu'il y ait (encore) plus de texte, soit réduire la taille de la fenêtre de
votre navigateur pour faire apparaître les barres de défilement sur le côté.
L'attribut id sert à donner un nom « unique » à une balise, pour s'en servir de repère. Et, croyez-moi, vous
n'avez pas fini d'entendre parler de cet attribut. Ici, on s'en sert pour faire un lien vers une ancre mais, en
CSS, il nous sera très utile pour « repérer » une balise précise, vous verrez.
Évitez cependant de créer des id avec des espaces ou des caractères spéciaux, utilisez simplement, dans la
mesure du possible, des lettres et chiffres pour que la valeur soit reconnue par tous les navigateurs.
L'idée, c'est de faire un lien qui ouvre une autre page ET qui amène directement à une ancre située plus bas sur
cette page.
En pratique c'est assez simple à faire : il suffit de taper le nom de la page, suivi d'un dièse (#), suivi du nom de
l'ancre.
… vous amènera sur la page [Link], directement au niveau de l'ancre appelée rollers.
Voici une page qui contient trois liens, chacun amenant vers une des ancres de la page de l'exemple précédent :
<h1>Le Mégamix</h1>
<p>
Rendez-vous quelque part sur une autre page :<br />
<a href="[Link]#cuisine">La cuisine</a><br />
<a href="[Link]#rollers">Les rollers</a><br />
<a href="[Link]#arc">Le tir à l'arc</a><br /> </p>
Cas pratiques d'utilisation des liens
Je vais essayer de vous montrer ici quelques cas pratiques d'utilisation des liens. Par exemple, saviez-vous qu'il
est très facile de faire des liens qui lancent un téléchargement ? Qui créent un nouvel e-mail ? Qui ouvrent une
nouvelle fenêtre ?
Vous pouvez utiliser l'attribut title qui affiche une bulle d'aide lorsqu'on pointe sur le lien. Cet attribut est
facultatif.
Une infobulle
La bulle d'aide peut être utile pour informer le visiteur avant même qu'il n'ait cliqué sur le lien. Voici
comment reproduire ce résultat :
Si vous voulez que vos visiteurs puissent vous envoyer un e-mail, vous pouvez utiliser des liens de type
mailto. Rien ne change au niveau de la balise, vous devez simplement modifier la valeur de l'attribut href
comme ceci :
Beaucoup d'entre vous se demandent comment cela se passe pour le téléchargement d'un fichier… En fait, il faut
procéder exactement comme si vous faisiez un lien vers une page web, mais en indiquant cette fois le nom du
fichier à télécharger.
Par exemple, supposez que vous vouliez faire télécharger [Link]. Placez simplement ce fichier
dans le même dossier que votre page web (ou dans un sous-dossier) et faites un lien vers ce fichier :
C'est tout ! Le navigateur, voyant qu'il ne s'agit pas d'une page web à afficher, va lancer la procédure de
téléchargement lorsqu'on cliquera sur le lien.
En résumé
• Les liens permettent de changer de page et sont, par défaut, écrits en bleu et soulignés.
• Pour insérer un lien, on utilise la balise <a> avec l'attribut href pour indiquer l'adresse de la page
cible. Exemple : <a href="[Link]
• On peut faire un lien vers une autre page de son site simplement en écrivant le nom du fichier : <a
href="[Link]">.
Les images
Insérer une image dans une page web ? Vous allez voir, c'est d'une facilité déconcertante… Enfin presque. Il
existe différents formats d'image que l'on peut utiliser sur des sites web, et on ne doit pas les choisir au hasard.
En effet, les images sont parfois volumineuses à télécharger, ce qui ralentit le temps de chargement de la page
(beaucoup plus que le texte !).
Pour faire en sorte que vos pages restent lisibles et rapides à télécharger, suivez donc activement mes conseils !
Quand vous avez une image « entre les mains », vous avez la possibilité de l'enregistrer dans plusieurs « formats
» différents. Le poids (en Ko, voire en Mo) de l'image sera plus ou moins élevé selon le format choisi et la
qualité de l'image va changer.
Par exemple, le logiciel de dessin Paint (même si c'est loin d'être le meilleur) vous propose de choisir entre
plusieurs formats lorsque vous enregistrez une image (figure suivante).
Toutes les images diffusées sur Internet ont un point commun : elles sont compressées. Cela veut dire que
l'ordinateur fait des calculs pour qu'elles soient moins lourdes et donc plus rapides à charger.
Le JPEG
Les images au format JPEG (Joint Photographic Expert Group) sont très répandues sur le Web. Ce format est
conçu pour réduire le poids des photos (c'est-à-dire la taille du fichier associé), qui peuvent comporter plus de 16
millions de couleurs différentes. La figure suivante est une photo enregistrée au format JPEG.
Une photo de montagne en JPEG
Notez que le JPEG détériore un peu la qualité de l'image, d'une façon généralement imperceptible. C'est ce qui le
rend si efficace pour réduire le poids des photos.
Quand il s'agit d'une photo, on ne peut généralement pas détecter la perte de qualité. Par contre, si ce n'est pas
une photo, vous risquez de voir l'image un peu « baver ». Dans ce cas, il vaut mieux utiliser le format PNG.
Le PNG
Le format PNG (Portable Network Graphics) est le plus récent de tous. Ce format est adapté à la plupart des
graphiques (je serais tenté de dire « à tout ce qui n'est pas une photo »). Le PNG a deux gros avantages : il peut
être rendu transparent et il n'altère pas la qualité de l'image.
Le PNG a été inventé pour concurrencer un autre format, le GIF, à l'époque où il fallait payer des royalties pour
pouvoir utiliser des GIF. Depuis, le PNG a bien évolué et c'est devenu le format le plus puissant pour enregistrer
la plupart des images.
Le PNG existe en deux versions, en fonction du nombre de couleurs que doit comporter l'image :
La figure suivante est une image PNG en 24 bits, représentant Zozor, qui sera notre mascotte tout au long de ce
cours.
Zozor en PNG
La compression du JPEG est plus puissante sur les photos. Une photo enregistrée en JPEG se chargera toujours
beaucoup plus vite que si elle était enregistrée en PNG. Je vous conseille donc toujours de réserver le format
JPEG aux photos.
Si on résume, voici quel format adopter en fonction de l'image que vous avez :
Les autres formats non cités ici, comme le format BITMAP (*.bmp) sont à bannir car bien souvent ils ne sont
pas compressés, donc trop gros. Ils ne sont pas du tout adaptés au Web. On peut en mettre sur son site mais le
chargement sera vraiment extrêmement long !
Si vous voulez éviter des problèmes, prenez l'habitude d'enregistrer vos fichiers avec des noms en minuscules,
sans espace ni accent, par exemple : mon_image.png.
Vous pouvez remplacer les espaces par le caractère underscore (« _ ») comme je l'ai fait ici.
Revenons maintenant au code HTML pour découvrir comment placer des images dans nos pages web !
Insertion d'une image
Quelle est la fameuse balise qui va nous permettre d'insérer une image ? Il s'agit de… <img /> !
C'est une balise de type orpheline (comme <br />). Cela veut dire qu'on n'a pas besoin de l'écrire en deux
exemplaires comme la plupart des autres balises que nous avons vues jusqu'ici. En effet, nous n'avons pas besoin
de délimiter une portion de texte, nous voulons juste insérer une image à un endroit précis.
• src : il permet d'indiquer où se trouve l'image que l'on veut insérer. Vous pouvez soit mettre un chemin
absolu (ex. : [Link] soit mettre le chemin en relatif (ce qu'on fait
le plus souvent). Ainsi, si votre image est dans un sous-dossier images, vous devrez taper :
src="images/[Link]"
• alt : cela signifie « texte alternatif ». On doit toujours indiquer un texte alternatif à l'image, c'est-à-dire
un court texte qui décrit ce que contient l'image. Ce texte sera affiché à la place de l'image si celle-ci ne
peut pas être téléchargée (cela arrive), ou dans les navigateurs de personnes handicapées (non-voyants)
qui ne peuvent malheureusement pas « voir » l'image. Cela aide aussi les robots des moteurs de
recherche pour les recherches d'images. Pour la fleur, on mettrait par exemple : alt="Une fleur".
Les images doivent se trouver obligatoirement à l'intérieur d'un paragraphe (<p></p>). Voici un exemple
d'insertion d'image :
<p>
Voici une photo que j'ai prise lors de mes dernières vacances à la
montagne :<br />
<img src="images/[Link]" alt="Photo de montagne" /> </p>
Bref, l'insertion d'image est quelque chose de très facile pour peu qu'on sache indiquer où se trouve l'image,
comme on avait appris à le faire avec les liens.
La plus grosse « difficulté » (si on peut appeler cela une difficulté) consiste à choisir le bon format d'image. Ici,
c'est une photo donc c'est évidemment le format JPEG qu'on utilise.
Je le répète : évitez à tout prix les accents, majuscules et espaces dans vos noms de fichiers et de dossiers.
Voici un chemin qui va poser problème :
"Images du site/Image toute bê[Link]".
Il faudrait supprimer les espaces (ou les remplacer par le symbole « _ »), supprimer les accents et tout mettre
en minuscules comme ceci :
"images_du_site/image_toute_bete.jpg".
Sachez donc que, si votre image ne s'affiche pas, c'est très certainement parce que le chemin est incorrect !
Simplifiez au maximum vos noms de fichiers et de dossiers, et tout ira bien.
L'attribut permettant d'afficher une bulle d'aide est le même que pour les liens : il s'agit de title. Cet attribut
est facultatif (contrairement à alt).
<p>
Voici une photo que j'ai prise lors de mes dernières vacances à la
montagne :<br />
<img src="images/[Link]" alt="Photo de montagne" title="C'est beau
les Alpes quand même !" /> </p> Les figures
Au cours de la lecture de ce livre, vous avez déjà rencontré plusieurs fois des figures. Ce sont des éléments qui
viennent enrichir le texte pour compléter les informations de la page.
• images ;
• codes source ;
• citations ;
• etc.
Bref, tout ce qui vient illustrer le texte est une figure. Nous allons ici nous intéresser aux images mais,
contrairement à ce qu'on pourrait croire, les figures ne sont pas forcément des images : un code source aussi
illustre le texte.
Reprenons par exemple cette capture d'écran du premier chapitre, représentée à la figure suivante.
Le logiciel Bloc-Notes
<figure>
<img src="images/[Link]"
alt="Bloc-Notes" />
</figure>
Une figure est le plus souvent accompagnée d'une légende. Pour ajouter une légende, utilisez la balise
<figcaption> à l'intérieur de la balise <figure>, comme ceci :
<figure>
<img src="images/[Link]" alt="Bloc-Notes" />
<figcaption>Le logiciel Bloc-Notes</figcaption> </figure>
Un peu plus tôt dans ce chapitre, je vous ai dit que les images devaient être situées dans des paragraphes (placées
à l'intérieur d'une balise <p></p>). Ce n'est pas tout à fait vrai.
Si vous faites de votre image une figure, l'image peut être située en-dehors d'un paragraphe.
Je ne vois pas vraiment de changement. Quand dois-je placer mon image dans un paragraphe et quand dois-
je la placer dans une figure ?
• Si elle n'apporte aucune information (c'est juste une illustration pour décorer) : placez l'image dans un
paragraphe.
• Si elle apporte une information : placez l'image dans une figure.
La balise <figure> a un rôle avant tout sémantique. Cela veut dire qu'elle indique à l'ordinateur que l'image a
du sens et qu'elle est importante pour la bonne compréhension du texte. Cela peut permettre à un programme de
récupérer toutes les figures du texte et de les référencer dans une table des figures, par exemple.
Enfin, sachez qu'une figure peut très bien comporter plusieurs images. Voici un cas où cela se justifie :
<figure>
<img src="images/[Link]" alt="Logo Internet Explorer" />
<img src="images/[Link]" alt="Logo Mozilla Firefox" />
<img src="images/[Link]" alt="Logo Google Chrome" />
<figcaption>Logos des différents navigateurs</figcaption>
</figure>
En résumé
Dans ce premier chapitre sur le CSS, nous allons voir la théorie sur le CSS : qu'est-ce que c'est ? À quoi cela
ressemble-t-il ? Où est-ce qu'on écrit du code CSS ? Ces aspects théoriques ne sont pas bien compliqués mais
vous devez obligatoirement les connaître car c'est la base du CSS. C'est d'ailleurs la seule chose que je vous
demanderai de retenir par cœur en CSS, vous pourrez retrouver le reste dans le mémo en annexe.
CSS ? C'est lui qui vous permet de choisir la couleur de votre texte.
Lui qui vous permet de sélectionner la police utilisée sur votre site.
Lui encore qui permet de définir la taille du texte, les bordures, le fond…
Et aussi, c'est lui qui permet de faire la mise en page de votre site. Vous pourrez dire : je veux que mon menu soit
à gauche et occupe telle largeur, que l'en-tête de mon site soit calé en haut et qu'il soit toujours visible, etc.
Souvenez-vous de ce petit comparatif que nous avions vu dès le premier chapitre (figure suivante).
Grâce au HTML, nous avons pu rédiger le contenu de notre site mais il est brut de décoffrage. Le CSS vient
compléter ce code pour mettre en forme tout cela et donner au contenu l'apparence que l'on souhaite.
CSS : la prise en charge des navigateurs
Tout comme le HTML, le CSS a évolué. Je vous avais indiqué qu'il y avait quatre versions importantes de CSS :
• CSS 1 ;
• CSS 2.0 ;
• CSS 2.1 ;
• CSS 3.
Ce sont les navigateurs web qui font le travail le plus complexe : ils doivent lire le code CSS et comprendre
comment afficher la page.
Depuis, de nombreux navigateurs sont arrivés et ont chahuté Internet Explorer : Mozilla Firefox bien sûr, mais
aussi Google Chrome. Et je ne vous parle pas du succès des Mac et iPhone avec leur navigateur Safari. Cela a
incité Microsoft à réagir et publier (après une longue période d'inactivité) IE 7, puis IE 8 et IE 9, 10, 11... Et
maintenant Edge.
Où écrit-on le CSS ?
Vous avez le choix car on peut écrire du code en langage CSS à trois endroits différents :
Je vais vous présenter ces trois méthodes mais sachez d'ores et déjà que la première… est la meilleure.
Comme je viens de vous le dire, on écrit le plus souvent le code CSS dans un fichier spécial ayant l'extension
.css (contrairement aux fichiers HTML qui ont l'extension .html). C'est la méthode la plus pratique et la plus
souple. Cela nous évite de tout mélanger dans un même fichier. J'utiliserai cette technique dans toute la suite de
ce cours.
Commençons à pratiquer dès maintenant ! Nous allons partir du fichier HTML suivant :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="[Link]" />
<title>Premiers tests du CSS</title>
</head>
<body>
<h1>Mon super site</h1>
Vous noterez le contenu de la ligne 5, <link rel="stylesheet" href="[Link]" /> : c'est elle
qui indique que ce fichier HTML est associé à un fichier appelé [Link] et chargé de la mise en forme.
Enregistrez ce fichier sous le nom que vous voulez (par exemple [Link]). Pour le moment, rien
d'extraordinaire à part la nouvelle balise que nous avons ajoutée.
Maintenant, créez un nouveau fichier vide dans votre éditeur de texte (par exemple Sublime Text) et copiez-y ce
bout de code CSS (rassurez-vous, je vous expliquerai tout à l'heure ce qu'il veut dire) :
p
{
color: blue;
}
Pour obtenir la coloration du code dans Sublime Text, enregistrez bien votre fichier avec l'extension .css
d'abord.
Enregistrez le fichier en lui donnant un nom qui se termine par .css, comme [Link]. Placez ce fichier
.css dans le même dossier que votre fichier .html.
Dans Sublime Text, vous devriez observer quelque chose de similaire à la figure suivante.
Ouvrez maintenant votre fichier [Link] dans votre navigateur pour le tester, comme vous le faites
d'habitude. Regardez, c'est magique : vos paragraphes sont écrits en bleu, comme dans la figure suivante !
Le texte est écrit en bleu
Il est inutile d'ouvrir directement le fichier [Link] dans le navigateur. Il faut ouvrir le fichier
[Link] (il fera automatiquement appel au fichier [Link]).
Il existe une autre méthode pour utiliser du CSS dans ses fichiers HTML : cela consiste à insérer le code CSS
directement dans une balise <style> à l'intérieur de l'en-tête <head>.
Voici comment on peut obtenir exactement le même résultat avec un seul fichier .html qui contient le code
CSS (lignes 5 à 10) :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
p
{
color: blue;
}
</style>
<title>Premiers tests du CSS</title>
</head>
<body>
<h1>Mon super site</h1>
Dernière méthode, à manipuler avec précaution : vous pouvez ajouter un attribut style à n'importe quelle
balise. Vous insérerez votre code CSS directement dans cet attribut :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Premiers tests du CSS</title>
</head>
<body>
<h1>Mon super site</h1>
Cette fois, seul le texte du premier paragraphe (ligne 11), dont la balise contient le code CSS, sera coloré en bleu
(figure suivante).
Le premier paragraphe est écrit en bleu
Je trouve que la première méthode que tu recommandes est plus compliquée que les deux autres ! Pourquoi
nous conseilles-tu de créer deux fichiers, j'étais bien, moi, avec juste un fichier .html !
Je vous recommande fortement de prendre l'habitude de travailler avec la première méthode parce que c'est celle
utilisée par la majorité des webmasters… Pourquoi ?
Pour le moment, vous faites vos tests sur un seul fichier HTML. Cependant, votre site sera plus tard constitué de
plusieurs pages HTML, on est d'accord ?
Imaginez : si vous placez le code CSS directement dans le fichier HTML, il faudra copier ce code dans tous les
fichiers HTML de votre site ! Et si demain vous changez d'avis, par exemple si vous voulez que vos paragraphes
soient écrits en rouge et non en bleu, il faudra modifier chaque fichier HTML un à un, comme le montre la figure
suivante.
Le code CSS est répété dans chaque fichier HTML
Si vous travaillez avec un fichier CSS externe, vous n'aurez besoin d'écrire cette instruction qu'une seule fois
pour tout votre site, comme le montre la figure suivante.
Le code CSS est donné une fois pour toutes dans un fichier CSS
Maintenant que nous savons où placer le code CSS, intéressons-nous de plus près à ce code. Je vous ai donné,
sans vous l'expliquer, un premier bout de code CSS :
p
{
color: blue;
}
Dans un code CSS comme celui-ci, on trouve trois éléments différents :
• Des noms de balises : on écrit les noms des balises dont on veut modifier l'apparence. Par exemple, si
je veux modifier l'apparence de tous les paragraphes <p>, je dois écrire p.
• Des propriétés CSS : les « effets de style » de la page sont rangés dans des propriétés. Il y a par
exemple la propriété color qui permet d'indiquer la couleur du texte, font-size qui permet
d'indiquer la taille du texte, etc. Il y a beaucoup de propriétés CSS et, comme je vous l'ai dit, je ne vous
obligerai pas à les connaître toutes par cœur.
• Les valeurs : pour chaque propriété CSS, on doit indiquer une valeur. Par exemple, pour la propriété
color, il faut indiquer le nom de la couleur. Pour font-size, il faut indiquer quelle taille on veut,
etc.
Vous repérez dans cet extrait de code les balises, propriétés et valeurs dont je viens de vous parler.
Comme vous le voyez, on écrit le nom de la balise (par exemple h1) et on ouvre des accolades pour, à l'intérieur,
mettre les propriétés et valeurs que l'on souhaite. On peut mettre autant de propriétés que l'on veut à l'intérieur
des accolades. Chaque propriété est suivie du symbole « deux-points » ( : ) puis de la valeur correspondante.
Enfin, chaque ligne se termine par un point-virgule ( ; ).
Je vous apprendrai de nombreuses propriétés dans les chapitres suivants. Pour le moment, dans les exemples, on
va juste changer la couleur pour s'entraîner.
Essayez de changer le nom de la balise affectée par le code CSS. Par exemple, si j'écris h1, c'est le titre qui sera
écrit en bleu. Modifiez votre fichier [Link] comme ceci :
h1
{
color: blue;
}
Maintenant, ouvrez à nouveau votre page HTML (souvenez-vous, c'est la page HTML qu'on ouvre dans le
navigateur, pas le fichier CSS !) : vous devriez voir son titre s'afficher en bleu (figure suivante) !
Titre écrit en bleu
Appliquer un style à plusieurs balises Prenons le code CSS
suivant :
h1
{
color: blue;
}
em
{
color: blue;
}
Il signifie que nos titres <h1> et nos textes importants <em> doivent s'afficher en bleu. Par contre, c'est un peu
répétitif, vous ne trouvez pas ?
Heureusement, il existe un moyen en CSS d'aller plus vite si les deux balises doivent avoir la même présentation.
Il suffit de combiner la déclaration en séparant les noms des balises par une virgule, comme ceci :
h1, em
{
color: blue;
}
Le résultat se trouve à la figure suivante.
Titre et texte important écrits en bleu Cela
signifie : « Je veux que le texte de mes <h1> et <em> soit écrit en bleu ».
Comme en HTML, il est possible de mettre des commentaires. Les commentaires ne seront pas affichés, ils
servent simplement à indiquer des informations pour vous, par exemple pour vous y retrouver dans un looong
fichier CSS.
D'ailleurs, vous allez vous en rendre compte, en général le fichier HTML est assez court et la feuille CSS assez
longue (si elle contient tous les éléments de style de votre site, c'est un peu normal). Notez qu'il est possible de
créer plusieurs fichiers CSS pour votre site si vous ressentez le besoin de séparer un peu votre code CSS (en
fonction des différentes sections de votre site, par exemple).
Donc, pour faire un commentaire, c'est facile ! Tapez /*, suivi de votre commentaire, puis */ pour terminer
votre commentaire.
Vos commentaires peuvent être écrits sur une ou plusieurs lignes. Par exemple :
/*
[Link]
---------
Ce que je vous ai montré jusqu'ici a quand même un défaut : cela implique par exemple que TOUS les
paragraphes possèdent la même présentation (ici, ils seront donc tous écrits en bleu).
Comment faire pour que certains paragraphes seulement soient écrits d'une manière différente ? On pourrait
placer le code CSS dans un attribut style sur la balise que l'on vise (c'est la technique que je vous ai présentée
un peu plus tôt) mais, comme je vous l'ai dit, ce n'est pas recommandé (il vaut mieux utiliser un fichier CSS
externe).
Pour résoudre le problème, on peut utiliser ces attributs spéciaux qui fonctionnent sur toutes les balises :
• l'attribut class ;
• l'attribut id.
Que les choses soient claires dès le début : les attributs class et id sont quasiment identiques. Il y a seulement
une petite différence que je vous dévoilerai plus bas.
Pour le moment, et pour faire simple, on ne va s'intéresser qu'à l'attribut class.
Comme je viens de vous le dire, c'est un attribut que l'on peut mettre sur n'importe quelle balise, aussi bien titre
que paragraphe, image, etc.
En fait, vous devez écrire un nom qui sert à identifier la balise. Ce que vous voulez, du moment que le nom
commence par une lettre.
Par exemple, je vais associer la classe introduction à mon premier paragraphe (ligne 12) :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="[Link]" />
<title>Premiers tests du CSS</title>
</head>
<body>
<h1>Mon super site</h1>
<p class="introduction">Bonjour et bienvenue sur
mon site !</p> <p>Pour le moment, mon site est un
peu <em>vide</em>. Patientez encore un peu !</p>
</body>
</html>
Maintenant que c'est fait, votre paragraphe est identifié. Il a un nom : introduction. Vous allez pouvoir
réutiliser ce nom dans le fichier CSS pour dire : « Je veux que seules les balises qui ont comme nom
'introduction' soient affichées en bleu ».
Pour faire cela en CSS, indiquez le nom de votre classe en commençant par un point, comme ci-dessous :
.introduction
{ color: blue; }
Testez le résultat : seul votre paragraphe appelé introduction va s'afficher en bleu (figure suivante) !
Et l'attribut id alors ?
Lui, il fonctionne exactement de la même manière que class, à un détail près : il ne peut être utilisé qu'une fois
dans le code.
En pratique, nous ne mettrons des id que sur des éléments qui sont uniques dans la page, comme par exemple le
logo :
<img src="images/[Link]" alt="Logo du site" id="logo" >
Si vous utilisez des id, lorsque vous définirez leurs propriétés dans le fichier CSS, il faudra faire précéder le
nom de l'id par un dièse (#) :
#logo
{
/* Indiquez les propriétés CSS ici */ }
Si vous vous emmêlez les pinceaux entre class et id retenez que deux balises peuvent avoir le même nom
avec l'attribut class. Un nom d'id doit en revanche être unique dans la page HTML.
Il arrivera parfois que vous ayez besoin d'appliquer une class (ou un id) à certains mots qui, à l'origine, ne
sont pas entourés par des balises.
En effet, le problème de class, c'est qu'il s'agit d'un attribut. Vous ne pouvez donc en mettre que sur une balise.
Si, par exemple, je veux modifier uniquement « bienvenue » dans le paragraphe suivant :
Cela serait facile à faire s'il y avait une balise autour de « bienvenue » mais, malheureusement il n'y en a pas. Par
chance, on a inventé… la balise-qui-ne-sert-à-rien.
En fait, on a inventé deux balises dites universelles, qui n'ont aucune signification particulière (elles n'indiquent
pas que le mot est important, par exemple). Il y a une différence minime (mais significative !) entre ces deux
balises :
• <span> </span> : c'est une balise de type inline, c'est-à-dire une balise que l'on place au sein d'un
paragraphe de texte, pour sélectionner certains mots uniquement. Les balises <strong> et <em> sont
de la même famille. Cette balise s'utilise donc au milieu d'un paragraphe et c'est celle dont nous allons
nous servir pour colorer « bienvenue ».
• <div> </div> : c'est une balise de type block, qui entoure un bloc de texte. Les balises <p>, <h1>,
etc. sont de la même famille. Ces balises ont quelque chose en commun : elles créent un nouveau « bloc
» dans la page et provoquent donc obligatoirement un retour à la ligne. <div> est une balise
fréquemment utilisée dans la construction d'un design, comme nous le verrons plus tard.
Pour le moment donc, nous allons utiliser plutôt la balise <span>. On la met autour de « bienvenue », on lui
ajoute une classe (du nom qu'on veut), on crée le CSS et c'est gagné !
En CSS, le plus difficile est de savoir cibler le texte dont on veut changer la forme. Pour cibler (on dit «
sélectionner ») les éléments de la page à modifier, on utilise ce qu'on appelle des sélecteurs. Vous en avez déjà
utilisé quelques-uns un peu plus tôt dans ce chapitre, résumons-les pour commencer.
Ces sélecteurs, que nous avons vus précédemment, sont de loin les plus couramment utilisés. Il faut les connaître
par cœur. Commençons par la base de la base :
p {
… signifie « Je veux toucher tous les paragraphes ». Après, c'est à vous de dire ce que vous faites à ces
paragraphes (vous les écrivez en bleu, par exemple).
h1, em
{
}
… qui signifie « Tous les titres et tous les textes importants ». Nous avons sélectionné deux balises d'un coup.
Et enfin, nous avons vu comment sélectionner des balises précises à qui nous avons donné un nom grâce aux
attributs class et id :
.class
{
#id
{
Vous savez quoi ? Il existe des dizaines d'autres façons de cibler des balises en CSS ! Nous n'allons pas toutes les
voir car il y en a beaucoup et certaines sont complexes, mais voici déjà de quoi vous permettre d'être plus
efficaces en CSS !
* : sélecteur universel
*
{
h3 em
{
Sélectionne toutes les balises <em> situées à l'intérieur d'une balise <h3>. Notez qu'il n'y a pas de virgule entre
les deux noms de balises.
h3 + p
{
Exemple :
<h3>Titre</h3>
<p>Paragraphe</p>
A[attribut] : une balise qui possède un attribut
a[title]
{
Exemple :
a[title="Cliquez ici"]
{
Idem, mais l'attribut doit en plus avoir exactement pour valeur « Cliquez ici ».
Exemple :
a[title*="ici"]
{
Idem, l'attribut doit cette fois contenir dans sa valeur le mot « ici » (peu importe sa position).
Exemple :
En résumé
• CSS est un autre langage qui vient compléter le HTML. Son rôle est de mettre en forme votre page web.
• Il faut être vigilant sur la compatibilité des navigateurs avec certaines fonctionnalités récentes de CSS3.
Quand un navigateur ne connaît pas une instruction de mise en forme, il l'ignore simplement.
• On peut écrire le code CSS à plusieurs endroits différents, le plus conseillé étant de créer un fichier
séparé portant l'extension .css (exemple : [Link]).
• En CSS, on sélectionne quelles portions de la page HTML on veut modifier et on change leur
présentation avec des propriétés CSS :
Formatage du texte
Nous arrivons maintenant à un chapitre qui devrait beaucoup vous intéresser.
Non, le « formatage du texte » n'a rien à voir avec la destruction de toutes les données présentes sur votre disque
dur ! Cela signifie simplement que l'on va modifier l'apparence du texte (on dit qu'on le « met en forme »).
Pas de surprise particulière : nous sommes toujours dans le CSS et nous allons réutiliser ce que nous venons
d'apprendre dans le chapitre précédent. Nous allons donc travailler directement au sein du fichier .css que nous
avons créé.
Ce chapitre va être l'occasion de découvrir de nombreuses propriétés CSS : nous allons voir comment modifier la
taille du texte, changer la police, aligner le texte…
La taille
Pour modifier la taille du texte, on utilise la propriété CSS font-size. Mais comment indiquer la taille du
texte ? C'est là que les choses se corsent car plusieurs techniques vous sont proposées :
• Indiquer une taille absolue : en pixels, en centimètres ou millimètres. Cette méthode est très précise
mais il est conseillé de ne l'utiliser que si c'est absolument nécessaire, car on risque d'indiquer une taille
trop petite pour certains lecteurs.
• Indiquer une taille relative : en pourcentage, « em » ou « ex », cette technique a l'avantage d'être plus
souple. Elle s'adapte plus facilement aux préférences de taille des visiteurs.
Pour indiquer une taille absolue, on utilise généralement les pixels. Pour avoir un texte de 16 pixels de hauteur,
vous devez donc écrire :
font-size: 16px;
Les lettres auront une taille de 16 pixels, comme le montre la figure suivante.
Si vous le souhaitez, vous pouvez également définir des tailles en centimètres ou millimètres. Remplacez «
px » par « cm » ou « mm ». Ces unités sont cependant moins bien adaptées aux écrans.
C'est la méthode recommandée car le texte s'adapte alors plus facilement aux préférences de tous les visiteurs.
Il y a plusieurs moyens d'indiquer une valeur relative. Vous pouvez par exemple écrire la taille avec des mots en
anglais comme ceux-ci :
• xx-small : minuscule ;
• x-small : très petit ;
• small : petit ;
• medium : moyen ;
• large : grand ;
• x-large : très grand ;
• xx-large : euh… gigantesque.
Vous pouvez tester l'utilisation de ces valeurs dans votre code CSS :
p
{
font-size: small;
}
h1
{
font-size: large;
}
Bon, cette technique a un défaut : il n'y a que sept tailles disponibles (car il n'y a que sept noms). Heureusement,
il existe d'autres moyens. Ma technique préférée consiste à indiquer la taille en « em ».
Faites attention : pour les nombres décimaux, il faut mettre un point et non une virgule. Vous devez donc
écrire « 1.4em » et non pas « 1,4em » !
Exemple :
p
{
font-size: 0.8em;
}
h1
{
font-size: 1.3em;
}
D'autres unités sont disponibles. Vous pouvez essayer le « ex » (qui fonctionne sur le même principe que le em
mais qui est plus petit de base) et le pourcentage (80%, 130%…).
La police
En effet, il se pose un problème : pour qu'une police s'affiche correctement, il faut que tous les internautes l'aient.
Si un internaute n'a pas la même police que vous, son navigateur prendra une police par défaut (une police
standard) qui n'aura peut-être rien à voir avec ce à quoi vous vous attendiez.
La bonne nouvelle, c'est que depuis CSS 3, il est possible de faire télécharger automatiquement une police au
navigateur. Je vous expliquerai dans un second temps comment faire cela.
La propriété CSS qui permet d'indiquer la police à utiliser est font-family. Vous devez écrire le nom de la
police comme ceci :
balise { font-
family: police; }
Seulement, pour éviter les problèmes si l'internaute n'a pas la même police que vous, on précise en général
plusieurs noms de police, séparés par des virgules :
balise
{
font-family: police1, police2, police3,
police4; }
Le navigateur essaiera d'abord d'utiliser la police1. S'il ne l'a pas, il essaiera la police2. S'il ne l'a pas, il
passera à la police3, et ainsi de suite.
En général, on indique en tout dernier serif, ce qui correspond à une police par défaut (qui ne s'applique que si
aucune autre police n'a été trouvée).
Il existe aussi une autre police par défaut appelée sans-serif. La différence entre les deux est la présence
de petites pattes de liaison en bas des lettres, que la police sans-serif n'a pas. Oui, c'est subtil.
Oui, mais quelles sont les polices les plus courantes qu'on a le « droit » d'utiliser, me direz-vous ? Voici
une liste de polices qui fonctionnent bien sur la plupart des navigateurs :
• Arial ;
• Arial Black ;
• Comic Sans MS ;
• Courier New ;
• Georgia ;
• Impact ;
• Times New Roman ;
• Trebuchet MS ;
• Verdana.
Ainsi, si j'écris :
p
{
font-family: Impact, "Arial Black", Arial, Verdana, sans-serif;
}
… cela signifie : « Mets la police Impact ou, si elle n'y est pas, Arial Black, ou sinon Arial, ou sinon Verdana, ou
si rien n'a marché, mets une police standard (sans-serif) ».
En général, il est bien d'indiquer un choix de trois ou quatre polices (+ serif ou sans-serif) afin de s'assurer qu'au
moins l'une d'entre elles aura été trouvée sur l'ordinateur du visiteur.
Si le nom de la police comporte des espaces, je conseille de l'entourer de guillemets, comme je l'ai fait pour
« Arial Black ».
Pendant longtemps, cela n'était pas possible. Aujourd'hui, avec CSS 3, il existe heureusement un moyen d'utiliser
n'importe quelle police sur son site. Cela fonctionne bien avec la plupart des navigateurs.
Mais attention, il y a des défauts (ce serait trop beau sinon) :
• Il faudra que le navigateur de vos visiteurs télécharge automatiquement le fichier de la police, dont le
poids peut atteindre, voire dépasser 1 Mo…
• La plupart des polices sont soumises au droit d'auteur, il n'est donc pas légal de les utiliser sur son site.
Heureusement, il existe des sites comme [Link] et [Link] qui proposent en
téléchargement un certain nombre de polices libres de droits. Je recommande en particulier
[Link] car il permet de télécharger des packs prêts à l'emploi pour CSS 3.
• Il existe plusieurs formats de fichiers de polices et ceux-ci ne fonctionnent pas sur tous les navigateurs.
Voici les différents formats de fichiers de polices qui existent et qu'il faut connaître :
• .ttf : TrueType Font. Fonctionne sur IE9 et tous les autres navigateurs.
• .eot : Embedded OpenType. Fonctionne sur Internet Explorer uniquement, toutes versions. Ce format
est propriétaire, produit par Microsoft.
• .otf : OpenType Font. Ne fonctionne pas sur Internet Explorer.
• .svg : SVG Font. Le seul format reconnu sur les iPhones et iPads pour le moment.
• .woff : Web Open Font Format. Nouveau format conçu pour le Web, qui fonctionne sur IE9 et tous
les autres navigateurs.
En CSS, pour définir une nouvelle police, vous devez la déclarer comme ceci :
@font-face {
font-family: 'MaSuperPolice'; src:
url('[Link]'); }
Le fichier de police (ici [Link]) doit ici être situé dans le même dossier que le fichier CSS (ou dans
un sous-dossier, si vous utilisez un chemin relatif).
Oui, d'ailleurs les .eot ne fonctionnent que sur Internet Explorer. L'idéal est de proposer plusieurs formats pour
la police : le navigateur téléchargera celui qu'il sait lire. Voici comment indiquer plusieurs formats :
@font-face {
font-family: 'MaSuperPolice';
src: url('[Link]') format('eot'),
url('[Link]') format('woff'), url('[Link]')
format('truetype'), url('[Link]') format('svg'); }
Pour tester le fonctionnement, je vous propose de télécharger une police sur Font Squirrel, par exemple Learning
Curve Pro. Cliquez sur « @font-face Kit », cela vous permettra de télécharger un kit prêt à l'emploi avec tous les
formats pour cette police.
Vous noterez quelques bizarreries dans le CSS généré par le site Font Squirrel. Le but est de pallier certains
bugs sur Internet Explorer car les anciennes versions ne comprennent pas quand on définit plusieurs formats.
Cela explique donc la présence d'un ?#iefix dans le code.
Italique, gras, souligné…
Il existe en CSS une série de propriétés classiques de mise en forme du texte. Nous allons découvrir ici comment
afficher le texte en gras, italique, souligné… et au passage nous verrons qu'il est même possible d'aller jusqu'à le
faire clignoter !
Mettre en italique
Attends un peu là ! Je croyais que la balise <em> permettait de mettre un texte en italique ?!
<em>, mettez-vous bien cela dans la tête, est faite pour insister sur des mots. Cela veut dire que les mots qu'elle
entoure sont assez importants.
Pour représenter cette importance, la plupart des navigateurs choisissent d'afficher le texte en italique, mais ce
n'est pas une obligation.
Le CSS lui, permet de dire réellement : « Je veux que ce texte soit en italique ». Rien ne vous empêche, par
exemple, de décider que tous vos titres seront en italique.
Concrètement, en CSS, pour mettre en italique, on utilise font-style qui peut prendre trois valeurs :
h2 { font-style:
italic; }
Mettre en gras
La propriété CSS pour mettre en gras est font-weight et prend les valeurs suivantes :
La propriété CSS associée porte bien son nom : text-decoration. Elle permet, entre autres, de souligner le
texte, mais pas seulement. Voici les différentes valeurs qu'elle peut prendre :
• underline : souligné.
• line-through : barré.
• overline : ligne au-dessus.
• blink : clignotant. Ne fonctionne pas sur tous les navigateurs (Internet Explorer et Google Chrome,
notamment).
• none : normal (par défaut).
L'alignement
Le langage CSS nous permet de faire tous les alignements connus : à gauche, centré, à droite et justifié.
Alignements du texte
Vous ne pouvez pas modifier l'alignement du texte d'une balise inline (comme <span>, <a>, <em>,
<strong>…). L'alignement ne fonctionne que sur des balises de type block (<p>, <div>, <h1>, <h2>,
…) et c'est un peu logique, quand on y pense : on ne peut pas modifier l'alignement de quelques mots au
milieu d'un paragraphe !
C'est donc en général le paragraphe entier qu'il vous faudra aligner.
Les flottants
Le CSS nous permet de faire flotter un élément autour du texte. On dit aussi qu'on fait un « habillage ».
Pour que vous voyiez bien de quoi on parle, la figure suivante vous montre ce que nous allons apprendre à faire.
Une image flottante entourée par du texte
J'imagine que, maintenant, la question qui vous brûle les lèvres est : « Mais quelle est donc la propriété magique
qui fait flotter ? ».
La réponse est… float (« flottant » en anglais). Cette propriété peut prendre deux valeurs très simples :
On peut aussi bien utiliser la propriété float sur des balises block que sur des balises inline. Il est courant
de faire flotter une image pour qu'elle soit habillée par du texte, comme dans l'exemple précédent.
Nous allons apprendre ici à faire flotter une image. Voici le code HTML que nous devons taper dans un premier
temps :
Vous devez placer l'élément flottant en premier dans le code HTML. Si vous placez l'image après le
paragraphe, l'effet ne fonctionnera pas.
Voici le seul bout de code CSS qu'on ait besoin de taper, qui permet de faire flotter l'image à gauche :
.imageflottante
{
float: left;
}
Amusez-vous aussi à faire flotter l'image à droite, c'est tout bête : il suffit d'indiquer la valeur right et le tour
est joué !
Stopper un flottant
Quand vous mettez en place un flottant, le texte autour l'habille. Mais comment faire si vous voulez qu'au bout
d'un moment le texte continue en dessous du flottant ? On pourrait enchaîner plusieurs <br /> à la suite mais
cela ne serait ni élégant ni très propre…
Il existe en fait une propriété CSS qui permet de dire : « Stop, ce texte doit être en-dessous du flottant et non plus
à côté ». C'est la propriété clear, qui peut prendre ces trois valeurs :
Pour simplifier, on va utiliser tout le temps le clear: both, qui marche après un flottant à gauche et après un
flottant à droite (cela fonctionne donc à tous les coups). Pour illustrer son fonctionnement, on va prendre ce code
HTML :
Et ce code CSS :
.imageflottante
{
float: left;
}
.dessous
{
clear: both;
}
Et voilà le travail.
On applique un clear: both; au paragraphe que l'on veut voir continuer sous l'image flottante et le tour est
joué !
En résumé
• On modifie la taille du texte avec la propriété CSS font-size. On peut indiquer la taille en pixels
(16px), en « em » (1.3em), en pourcentage (110%), etc.
• On change la police du texte avec font-family. Attention, seules quelques polices sont connues par
tous les ordinateurs. Vous pouvez cependant utiliser une police personnalisée avec la directive
@fontface : cela forcera les navigateurs à télécharger la police de votre choix.
• De nombreuses propriétés de mise en forme du texte existent : font-style pour l'italique,
fontweight pour la mise en gras, text-decoration pour le soulignement, etc.
• Le texte peut être aligné avec text-align.
• On peut faire en sorte qu'une image soit habillée (« entourée ») de texte avec float.
La couleur et le fond
Visionner la vidéo du Chapitre 3 de la Partie 2 sur Vimeo
Continuons notre tour d'horizon des propriétés CSS existantes. Nous allons nous intéresser ici aux propriétés
liées de près ou de loin à la couleur. Nous verrons entre autres :
Couleur du texte
Vous connaissez déjà la propriété qui permet de modifier la couleur du texte : il s'agit de color. Nous allons
nous intéresser aux différentes façons d'indiquer la couleur, car il y en a plusieurs.
La méthode la plus simple et la plus pratique pour choisir une couleur consiste à taper son nom (in english, of
course).
Le seul défaut de cette méthode est qu'il n'existe que seize couleurs dites « standard ». D'autres couleurs
officieuses existent mais, comme elles ne fonctionneront pas forcément de la même manière sur tous les
navigateurs, je vais éviter de vous les montrer.
La figure suivante vous montre les seize couleurs que vous pouvez utiliser en tapant simplement leur nom.
Les seize noms de couleurs utilisables en CSS
Vous pouvez les apprendre par cœur si cela vous chante, en plus cela vous fera réviser votre anglais.
La notation hexadécimale
Seize couleurs, c'est quand même un peu limite quand on sait que la plupart des écrans peuvent en afficher seize
millions.
D'un autre côté, remarquez, s'il avait fallu donner un nom à chacune des seize millions de couleurs…
Heureusement, il existe en CSS plusieurs façons de choisir une couleur parmi toutes celles qui existent. La
première que je vais vous montrer est la notation hexadécimale. Elle est couramment utilisée sur le Web mais il
existe aussi une autre méthode que nous verrons plus loin.
Un nom de couleur en hexadécimal, cela ressemble à : #FF5A28. Pour faire simple, c'est une combinaison de
lettres et de chiffres qui indiquent une couleur.
On doit toujours commencer par écrire un dièse (#), suivi de six lettres ou chiffres allant de 0 à 9 et de A à F. Ces
lettres ou chiffres fonctionnent deux par deux. Les deux premiers indiquent une quantité de rouge, les deux
suivants une quantité de vert et les deux derniers une quantité de bleu. En mélangeant ces quantités (qui sont les
composantes Rouge-Vert-Bleu de la couleur) on peut obtenir la couleur qu'on veut.
Ainsi, #000000 correspond à la couleur noire et #FFFFFF à la couleur blanche. Mais maintenant, ne me
demandez pas quelle est la combinaison qui produit de l'orange couleur « coucher de soleil », je n'en sais
strictement rien.
Certains logiciels de dessin, comme Photoshop, Gimp et [Link], vous indiquent les couleurs en
hexadécimal. Il vous est alors facile de copier-coller le code hexadécimal d'une couleur dans votre fichier
CSS.
Voici par exemple comment on fait pour appliquer aux paragraphes la couleur blanche en hexadécimal :
p
{
color:
#FFFFFF; }
Notez qu'il existe une notation raccourcie : on peut écrire une couleur avec seulement trois caractères. Par
exemple : #FA3 équivaut à écrire #FFAA33.
La méthode RGB
Que signifie RGB ? En anglais, Rouge-Vert-Bleu s'écrit Red-Green-Blue, ce qui s'abrège en « RGB ». Comme
avec la notation hexadécimale, pour choisir une couleur, on doit définir une quantité de rouge, de vert et de bleu.
Oui mais là, vous allez voir que c'est beaucoup plus pratique et qu'avec un logiciel de dessin tout simple comme
Paint, vous pouvez trouver la couleur que vous désirez. Voici la marche à suivre :
p { color: rgb(240,96,204);
}
Modification des couleurs sous Paint
Comme vous avez pu le constater dans l'exemple, pour utiliser la méthode RGB, il faut taper rgb(Rouge,
Vert, Bleu) en remplaçant « Rouge, Vert, Bleu » par les nombres correspondants. Pour information,
ces quantités sont toujours comprises entre 0 et 255.
Et en Bonus Track…
Je vous conseille de taper "Color Picker" sur Google et vous trouverez plusieurs outils et sites qui vous aident à
choisir une couleur.
Par exemple, [Link] permet de trouver la valeur hexadécimale d'une couleur très facilement
:
Le site [Link]
Vous pouvez aussi trouver des extensions de navigateur qui permettent de "récupérer" n'importe quelle couleur
qui vous plaît sur un site web :
Couleur de fond
Pour indiquer une couleur de fond, on utilise la propriété CSS background-color. Elle s'utilise de la même
manière que la propriété color, c'est-à-dire que vous pouvez taper le nom d'une couleur, l'écrire en notation
hexadécimale ou encore utiliser la méthode RGB.
Pour indiquer la couleur de fond de la page web, il faut travailler sur la balise <body>. Eh oui, <body>
correspond à l'ensemble de la page web, c'est donc en modifiant sa couleur de fond que l'on changera la couleur
d'arrière-plan de la page.
Eh mais tu as demandé à ce que le texte de la balise <body> soit écrit en blanc, et tous les paragraphes
<p> et titres <h1> ont pris cette couleur. Comment cela se fait-il ?
Je voulais justement profiter de l'occasion pour vous en parler. Ce phénomène s'appelle l'héritage. Je vous
rassure tout de suite, personne n'est mort.
Le CSS et l'héritage
En CSS, si vous appliquez un style à une balise, toutes les balises qui se trouvent à l'intérieur prendront le même
style.
C'est en fait simple à comprendre et intuitif. La balise <body>, vous le savez, contient entre autres les balises de
paragraphe <p> et de titre <h1>.
Si j'applique une couleur de fond noire et une couleur de texte blanche à la balise <body>, tous mes titres et
paragraphes auront eux aussi un arrière-plan de couleur noire et un texte de couleur blanche… C'est ce
phénomène qu'on appelle l'héritage : on dit que les balises qui se trouvent à l'intérieur d'une autre balise «
héritent » de ses propriétés.
C'est d'ailleurs de là que vient le nom « CSS », qui signifie « Cascading Style Sheets », c'est-à-dire « Feuilles
de style en cascade ». Les propriétés CSS sont héritées en cascade : si vous donnez un style à un élément,
tous les sous-éléments auront le même style.
Cela veut dire que TOUT le texte de ma page web sera forcément écrit en blanc ?
Non, pas obligatoirement. Si vous dites par la suite que vous voulez vos titres en rouge, ce style aura la priorité et
vos titres seront donc en rouge. En revanche, si vous n'indiquez rien de particulier (comme on l'a fait tout à
l'heure), alors vos titres hériteront de la couleur blanche.
Cela ne fonctionne pas uniquement pour la couleur, entendons-nous bien. Toutes les propriétés CSS seront
héritées : vous pouvez par exemple demander une mise en gras dans la balise <body> et tous vos titres et
paragraphes seront en gras.
On a tendance à croire qu'on ne peut modifier que la couleur de fond de la page. C'est faux : vous pouvez
changer le fond de n'importe quel élément : vos titres, vos paragraphes, certains mots… Dans ce cas, ils
apparaîtront surlignés (comme si on avait mis un coup de marqueur dessus).
Vous vous souvenez par exemple de la balise <mark> qui permet de mettre en valeur certains mots ? Utilisonsla
à nouveau ici :
Par défaut, le texte s'affiche sur un fond jaune. Vous pouvez changer ce comportement en CSS :
body
{
background-color: black;
color: white;
}
mar
k
{
/* La couleur de fond prend le pas sur celle de toute la page */
background-color: red; color: black;
}
Sur le texte de la balise <mark>, c'est la couleur de fond rouge qui s'applique. En effet, même si le fond de la
page est noir, c'est la propriété CSS de l'élément le plus précis qui a la priorité (figure suivante).
Un texte surligné en rouge sur un fond noir
Le même principe vaut pour toutes les balises HTML et toutes les propriétés CSS ! Si vous dites :
… on pourrait penser qu'il y a un conflit. Le texte important fait partie d'un paragraphe, quelle taille lui donner ?
1.2 em ou 1.4 em ? Le CSS décide que c'est la déclaration la plus précise qui l'emporte : comme <strong>
correspond à un élément plus précis que les paragraphes, le texte sera écrit en 1.4 em.
Images de fond
Dans les exemples qui suivent, je vais modifier l'image de fond de la page. Cependant, tout comme pour la
couleur de fond, n'oubliez pas que l'image de fond ne s'applique pas forcément à la page entière. On peut aussi
mettre une image de fond derrière les titres, paragraphes, etc.
La propriété permettant d'indiquer une image de fond est background-image. Comme valeur, on doit
renseigner url("nom_de_l_image.png"). Par exemple :
body
{
background-image:
url("[Link]"); }
Ce qui nous donne la figure suivante.
Une image de fond sur la page
Bien entendu, votre fond n'est pas forcément en PNG, il peut aussi être en JPEG ou en GIF. L'adresse
indiquant où se trouve l'image de fond peut être écrite en absolu ([Link] ou en relatif
([Link]).
Attention lorsque vous écrivez une adresse en relatif dans le fichier CSS ! L'adresse de l'image doit être
indiquée par rapport au fichier .css et non pas par rapport au fichier .html. Pour simplifier les choses, je
vous conseille de placer l'image de fond dans le même dossier que le fichier .css (ou dans un sousdossier).
On peut compléter la propriété background-image que nous venons de voir par plusieurs autres propriétés
qui permettent de changer le comportement de l'image de fond.
La propriété CSS background-attachment permet de « fixer » le fond. L'effet obtenu est intéressant car on
voit alors le texte « glisser » par-dessus le fond. Deux valeurs sont disponibles :
body
{
background-image: url("[Link]");
background-attachment: fixed; /* Le fond restera fixe */
}
background-repeat : répétition du fond
Par défaut, l'image de fond est répétée en mosaïque. Vous pouvez changer cela avec la propriété
backgroundrepeat :
• no-repeat : le fond ne sera pas répété. L'image sera donc unique sur la page.
• repeat-x : le fond sera répété uniquement sur la première ligne, horizontalement.
• repeat-y : le fond sera répété uniquement sur la première colonne, verticalement.
• repeat : le fond sera répété en mosaïque (par défaut).
Exemple d'utilisation :
body
{
background-image:
url("[Link]"); background-
repeat: no-repeat; }
background-position : position du fond
On peut indiquer où doit se trouver l'image de fond avec background-position. Cette propriété n'est
intéressante que si elle est combinée avec background-repeat: no-repeat; (un fond qui ne se répète
pas).
Vous devez donner à background-position deux valeurs en pixels pour indiquer la position du fond par
rapport au coin supérieur gauche de la page (ou du paragraphe, si vous appliquez le fond à un paragraphe). Ainsi,
si vous tapez :
… votre fond sera placé à 30 pixels de la gauche et à 50 pixels du haut. Il est aussi possible d'utiliser ces valeurs
en anglais :
• top : en haut ;
• bottom : en bas ;
• left : à gauche ;
• center : centré ;
• right : à droite.
Il est possible de combiner ces mots. Par exemple, pour aligner une image en haut à droite, vous taperez :
Ainsi, si je veux afficher un soleil en image de fond (figure suivante), en un unique exemplaire (no-repeat),
toujours visible (fixed) et positionné en haut à droite (top right), je vais écrire ceci :
body
{
background-image: url("[Link]");
background-attachment: fixed; /* Le fond restera fixe */
background-repeat: no-repeat; /* Le fond ne sera pas répété */
background-position: top right; /* Le fond sera placé en haut à droite
*/
}
Si vous utilisez beaucoup de propriétés en rapport avec le fond (comme c'est le cas sur ce dernier exemple), vous
pouvez utiliser une sorte de « super-propriété » appelée background dont la valeur peut combiner plusieurs
des propriétés vues précédemment : background-image, background-repeat,
backgroundattachment et background-position.
• L'ordre des valeurs n'a pas d'importance. Vous pouvez combiner les valeurs dans n'importe quel ordre.
• Vous n'êtes pas obligés de mettre toutes les valeurs. Ainsi, si vous ne voulez pas écrire fixed, vous
pouvez l'enlever sans problème.
Plusieurs images de fond
Depuis CSS3, il est possible de donner plusieurs images de fond à un élément. Pour cela, il suffit de séparer les
déclarations par une virgule, comme ceci :
La première image de cette liste sera placée par-dessus les autres (figure suivante). Attention donc, l'ordre de
déclaration des images a son importance : si vous inversez le soleil et la neige dans le code CSS précédent, vous
ne verrez plus le soleil !
À noter que les images de fond multiples fonctionnent sur tous les navigateurs sauf sur les anciennes versions
d'Internet Explorer, qui ne reconnaît cette fonctionnalité qu'à partir de la version 9 (IE9).
Une dernière chose avant d'en terminer avec les images de fond : dans tous ces exemples, j'ai appliqué un
fond à la page entière (body). Mais cela ne doit pas vous faire oublier qu'on peut appliquer un fond à
n'importe quel élément (un titre, un paragraphe, certains mots d'un paragraphe, etc.).
Je vous conseille donc, pour vous entraîner, d'essayer d'appliquer un fond à vos titres ou paragraphes. Si
vous avez un peu de goût (contrairement à moi !) vous arriverez certainement à donner une très belle allure à
votre page web.
notation RGBa que nous allons découvrir.
La notation RGBa
CSS3 nous propose une autre façon de jouer avec la transparence : la notation RGBa. Il s'agit en fait de la
notation RGB que nous avons vue précédemment, mais avec un quatrième paramètre : le niveau de transparence
(appelé « canal alpha »). De la même façon que précédemment, avec une valeur de 1, le fond est complètement
opaque. Avec une valeur inférieure à 1, il est transparent.
p
{
background-color: rgba(255, 0, 0, 0.5); /* Fond rouge à moitié
transparent */
}
C'est aussi simple que cela. Vous pouvez obtenir exactement le même effet qu'avec opacity juste en jouant
avec la notation RGBa, essayez !
Cette notation est connue de tous les navigateurs récents, y compris Internet Explorer (à partir de IE9). Pour les
navigateurs plus anciens, il est recommandé d'indiquer la notation RGB classique en plus de RGBa.
Pour ces navigateurs, le fond ne sera alors pas transparent mais, au moins, il y aura bien une couleur
d'arrièreplan.
p
{
background-color: rgb(255,0,0); /* Pour les navigateurs anciens */
background-color: rgba(255,0,0,0.5); /* Pour les navigateurs plus
récents */
}
En résumé
• On change la couleur du texte avec la propriété color, la couleur de fond avec backgroundcolor.
• On peut indiquer une couleur en écrivant son nom en anglais (black, par exemple), sous forme
hexadécimale (#FFC8D3) ou en notation RGB (rgb(250,25,118)).
• On peut ajouter une image de fond avec background-image. On peut choisir de fixer l'image de
fond, de l'afficher en mosaïque ou non, et même de la positionner où on veut sur la page.
• On peut rendre une portion de la page transparente avec la propriété opacity ou avec la notation
RGBa (identique à la notation RGB, avec une quatrième valeur indiquant le niveau de transparence).
Nous réutiliserons en particulier nos connaissances sur les couleurs pour choisir la couleur de nos bordures et de
nos ombres.
Bordures standard
Le CSS vous offre un large choix de bordures pour décorer votre page. De nombreuses propriétés CSS vous
permettent de modifier l'apparence de vos bordures : border-width, border-color, border-style…
Pour aller à l'essentiel, je vous propose ici d'utiliser directement la super-propriété border qui regroupe
l'ensemble de ces propriétés. Vous vous souvenez de la super-propriété background ? Cela fonctionne sur le
même principe : on va pouvoir combiner plusieurs valeurs.
Pour border on peut utiliser jusqu'à trois valeurs pour modifier l'apparence de la bordure :
• La largeur : indiquez la largeur de votre bordure. Mettez une valeur en pixels (comme 2px).
• La couleur : c'est la couleur de votre bordure. Utilisez, comme on l'a appris, soit un nom de couleur
(black, red,…), soit une valeur hexadécimale (#FF0000), soit une valeur RGB (rgb(198,
212, 37)).
• Le type de bordure : là, vous avez le choix. Votre bordure peut être un simple trait, ou des pointillés,
ou encore des tirets, etc. Voici les différentes valeurs disponibles :
o none : pas de bordure (par défaut) ;
o solid : un trait simple ; o
dotted : pointillés ;
Ainsi, pour avoir une bordure bleue, en tirets, épaisse de 3 pixels autour de mes titres, je vais écrire :
La figure suivante vous présente les différents styles de bordures que vous pouvez utiliser.
Qui a dit que vous étiez obligés d'appliquer la même bordure aux quatre côtés de votre élément ?
Taratata, si vous voulez mettre des bordures différentes en fonction du côté (haut, bas, gauche ou droite), vous
pouvez le faire sans problème. Dans ce cas, vous devrez utiliser ces quatre propriétés :
• border-top : bordure du haut ;
• border-bottom : bordure du bas ;
• border-left : bordure de gauche ;
• border-right : bordure de droite.
Il existe aussi des équivalents pour paramétrer chaque détail de la bordure si vous le désirez : bordertop-
width pour modifier l'épaisseur de la bordure du haut, border-top-color pour la couleur du haut, etc.
Ce sont aussi des super-propriétés, elles fonctionnent comme border mais ne s'appliquent donc qu'à un seul
côté.
Pour ajouter une bordure uniquement à gauche et à droite des paragraphes, on écrira donc :
On peut modifier les bordures de n'importe quel type d'élément sur la page. Nous l'avons fait ici sur les
paragraphes mais on peut aussi modifier la bordure des images, des textes importants comme <strong>,
etc.
Bordures arrondies
Les bordures arrondies, c'est un peu le Saint Graal attendu par les webmasters depuis des millénaires (ou
presque). Depuis que CSS3 est arrivé, il est enfin possible d'en créer facilement !
La propriété border-radius va nous permettre d'arrondir facilement les angles de n'importe quel élément. Il
suffit d'indiquer la taille (« l'importance ») de l'arrondi en pixels :
p { border-radius:
10px; }
L'arrondi se voit notamment si l'élément a des bordures, comme sur la figure suivante.
Des bordures arrondies
On peut aussi préciser la forme de l'arrondi pour chaque coin. Dans ce cas, indiquez quatre valeurs :
p
{
border-radius: 10px 5px 10px
5px; }
Les valeurs correspondent aux angles suivants dans cet ordre :
1. en haut à gauche ;
2. en haut à droite ;
3. en bas à droite ;
4. en bas à gauche.
Enfin, il est possible d'affiner l'arrondi de nos angles en créant des courbes elliptiques figure suivante). Dans ce
cas, il faut indiquer deux valeurs séparées par une barre oblique (slash, caractère /). Le mieux est certainement de
tester pour voir l'effet :
p
{
border-radius: 20px /
10px; }
Bordures arrondies elliptiques
Les ombres
Les ombres font partie des nouveautés récentes proposées par CSS3. Aujourd'hui, il suffit d'une seule ligne de
CSS pour ajouter des ombres dans une page !
La propriété box-shadow s'applique à tout le bloc et prend quatre valeurs dans l'ordre suivant :
Ajoutons un adoucissement grâce au troisième paramètre (figure suivante). L'adoucissement peut être faible
(inférieur au décalage), normal (égal au décalage) ou élevé (supérieur au décalage). Essayons un décalage normal
:
p
{
box-shadow: 6px 6px 6px
black; }
Une ombre adoucie sous le paragraphe
On peut aussi rajouter une cinquième valeur facultative : inset. Dans ce cas, l'ombre sera placée à l'intérieur du
bloc, pour donner un effet enfoncé :
p
{
box-shadow: 6px 6px 6px black
inset; }
Je vous laisse essayer de voir le résultat.
Avec text-shadow, vous pouvez ajouter une ombre directement sur les lettres de votre texte ! Les valeurs
fonctionnent exactement de la même façon que box-shadow : décalage, adoucissement et couleur.
p
{
text-shadow: 2px 2px 4px
black; }
Le résultat est illustré à la figure suivante.
Texte ombré
En résumé
• On peut appliquer une bordure à un élément avec la propriété border. Il faut indiquer la largeur de la
bordure, sa couleur et son type (trait continu, pointillés…).
• On peut arrondir les bordures avec border-radius.
• On peut ajouter une ombre aux blocs de texte avec box-shadow. On doit indiquer le décalage vertical
et horizontal de l'ombre, son niveau d'adoucissement et sa couleur.
• Le texte peut lui aussi avoir une ombre avec text-shadow.
• au survol ;
• lors du clic ;
• lors du focus (élément sélectionné) ;
• lorsqu'un lien a été consulté.
Vous allez voir que le langage CSS n'a pas fini de nous étonner !
Au survol
Nous allons découvrir dans ce chapitre plusieurs pseudo-formats CSS. Le premier que je vais vous montrer
s'appelle :hover. Comme tous les autres pseudo-formats que nous allons voir, c'est une information que l'on
rajoute après le nom de la balise (ou de la classe) dans le CSS, comme ceci :
a:hover {
:hover signifie « survoler ». a:hover peut donc se traduire par : « Quand la souris est sur le lien » (quand on
pointe dessus).
À partir de là, c'est à vous de définir l'apparence que doivent avoir les liens lorsqu'on pointe dessus. Laissez libre
cours à votre imagination, il n'y a pas de limite.
Voici un exemple de présentation des liens, mais n'hésitez pas à inventer le vôtre :
a /* Liens par défaut (non survolés) */
{
text-decoration: none;
color: red;
font-style: italic;
}
a:hover /* Apparence au survol des liens */
{
text-decoration: underline;
color: green;
}
On a défini ici deux versions des styles pour les liens :
Même si on l'utilise souvent sur les liens, vous pouvez modifier l'apparence de n'importe quel élément. Par
exemple, vous pouvez modifier l'apparence des paragraphes lorsqu'on pointe dessus :
Vous pouvez interagir encore plus finement en CSS. Nous allons voir ici que nous pouvons changer l'apparence
des éléments lorsque l'on clique dessus et lorsqu'ils sont sélectionnés !
Le pseudo-format :active permet d'appliquer un style particulier au moment du clic. En pratique, il n'est
utilisé que sur les liens.
Le lien gardera cette apparence très peu de temps : en fait, le changement intervient lorsque le bouton de la souris
est enfoncé. En clair, ce n'est pas forcément toujours bien visible.
On peut par exemple changer la couleur de fond du lien lorsque l'on clique dessus :
a:active /* Quand le visiteur clique sur le lien */
{
background-color:
#FFCC66; }
:focus : lorsque l'élément est sélectionné
Là, c'est un peu différent. Le pseudo-format :focus applique un style lorsque l'élément est sélectionné.
C'est-à-dire ?
Une fois que vous avez cliqué, le lien reste « sélectionné » (il y a une petite bordure en pointillés autour). C'est
cela, la sélection.
Ce pseudo-format pourra être appliqué à d'autres balises HTML que nous n'avons pas encore vues, comme
les éléments de formulaires.
Sous Google Chrome et Safari, l'effet ne se voit que si l'on appuie sur la touche Tab.
Il est possible d'appliquer un style à un lien vers une page qui a déjà été vue. Par défaut, le navigateur colore le
lien en un violet assez laid (de mon point de vue du moins !).
Vous pouvez changer cette apparence avec :visited (qui signifie « visité »). En pratique, sur les liens
consultés, on ne peut pas changer beaucoup de choses à part la couleur (figure suivante).
a:visited /* Quand le visiteur a déjà vu la page concernée */
{
color: #AAA; /* Appliquer une couleur grise */
}
Liens visités en gris
Si vous ne souhaitez pas que les liens déjà visités soient colorés d'une façon différente, il vous faudra leur
appliquer la même couleur qu'aux liens normaux. De nombreux sites web font cela (OpenClassrooms y
compris !). Une exception notable : Google… ce qui est plutôt pratique, puisque l'on peut voir dans les résultats
d'une recherche si on a déjà consulté ou non les sites que Google nous présente.
En résumé
Structurer sa page
Nous approchons de plus en plus du but. Si nos pages web ne ressemblent pas encore tout à fait aux sites web
que nous connaissons, c'est qu'il nous manque les connaissances nécessaires pour faire la mise en page.
En général, une page web est constituée d'un en-tête (tout en haut), de menus de navigation (en haut ou sur les
côtés), de différentes sections au centre… et d'un pied de page (tout en bas).
Dans ce chapitre, nous allons nous intéresser aux nouvelles balises HTML dédiées à la structuration du site. Ces
balises ont été introduites par HTML5 (elles n'existaient pas avant) et vont nous permettre de dire : « Ceci est
mon en-tête », « Ceci est mon menu de navigation », etc.
Pour le moment, nous n'allons pas encore faire de mise en page. Nous allons en fait préparer notre document
HTML pour pouvoir découvrir la mise en page dans les prochains chapitres.
Je vais vous présenter ici les nouvelles balises introduites par HTML5 pour structurer nos pages. Vous allez voir,
cela ne va pas beaucoup changer l'apparence de notre site pour le moment, mais il sera bien construit et prêt à
être mis en forme ensuite !
<header> : l'en-tête
La plupart des sites web possèdent en général un en-tête, appelé header en anglais. On y trouve le plus souvent
un logo, une bannière, le slogan de votre site…
<header>
<!-- Placez ici le contenu de l'en-
tête de votre page -->
</header>
La figure suivante, par exemple, représente le site du W3C (qui se charge des nouvelles versions de HTML et
CSS notamment). La partie encadrée en rouge correspondrait à l'en-tête :
L'en-tête peut contenir tout ce que vous voulez : images, liens, textes…
Il peut y avoir plusieurs en-têtes dans votre page. Si celle-ci est découpée en plusieurs sections, chaque
section peut en effet avoir son propre <header>.
À l'inverse de l'en-tête, le pied de page se trouve en général tout en bas du document. On y trouve des
informations comme des liens de contact, le nom de l'auteur, les mentions légales, etc.
<footer>
<!-- Placez ici le contenu du pied de page -->
</footer>
La balise <nav> doit regrouper tous les principaux liens de navigation du site. Vous y placerez par exemple le
menu principal de votre site.
Généralement, le menu est réalisé sous forme de liste à puces à l'intérieur de la balise <nav> :
<nav>
<ul>
<li><a href="[Link]">Accueil</a></li>
<li><a href="[Link]">Forum</a></li>
<li><a href="[Link]">Contact</a></li>
</ul> </nav>
La balise <section> sert à regrouper des contenus en fonction de leur thématique. Elle englobe généralement
une portion du contenu au centre de la page.
<section>
<h1>Ma section de page</h1>
<p>Bla bla bla bla</p>
</section>
Sur la page d'accueil du portail [Link], on trouve plusieurs blocs qui pourraient être considérés comme des
sections de page (figure suivante).
Des sections de page sur le portail de Free
Chaque section peut avoir son titre de niveau 1 (<h1>), de même que l'en-tête peut contenir un titre <h1>
lui aussi. Chacun de ces blocs étant indépendant des autres, il n'est pas illogique de retrouver plusieurs titres
<h1> dans le code de la page web. On a ainsi « Le titre <h1> du <header> », « Le titre <h1> de cette
<section> », etc.
La balise <aside> est conçue pour contenir des informations complémentaires au document que l'on visualise.
Ces informations sont généralement placées sur le côté (bien que ce ne soit pas une obligation).
<aside>
<!-- Placez ici des informations complémentaires
--> </aside>
Sur Wikipédia, par exemple, il est courant de voir à droite un bloc d'informations complémentaires à l'article que
l'on visualise. Ainsi, sur la page présentant la planète Saturne (figure suivante), on trouve dans ce bloc les
caractéristiques de la planète (dimensions, masse, etc.).
Bloc d'informations complémentaires sur Wikipédia
La balise <article> sert à englober une portion généralement autonome de la page. C'est une partie de la page
qui pourrait ainsi être reprise sur un autre site. C'est le cas par exemple des actualités (articles de journaux ou de
blogs).
<article>
<h1>Mon article</h1>
<p>Bla bla bla bla</p>
</article>
Par exemple, voici un article sur le Monde :
Ne vous y trompez pas : ce schéma propose un exemple d'organisation de la page. Rien ne vous empêche de
décider que votre menu de navigation soit à droite, ou tout en haut, que vos balises <aside> soient
audessus, etc.
On peut même imaginer une seconde balise <header>, placée cette fois à l'intérieur d'une <section>.
Dans ce cas-là, elle sera considérée comme étant l'en-tête de la section.
Enfin, une section ne doit pas forcément contenir un <article> et des <aside>. Utilisez ces balises
uniquement si vous en avez besoin. Rien ne vous interdit de créer des sections contenant seulement des
paragraphes, par exemple.
Essayons d'utiliser les balises que nous venons de découvrir pour structurer notre page web. Le code ci-dessous
reprend toutes les balises que nous venons de voir au sein d'une page web complète :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Zozor - Le Site Web</title>
</head>
<body>
<header>
<h1>Zozor</h1>
<h2>Carnets de voyage</h2>
</header>
<nav>
<ul>
<li><a href="#">Accueil</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">CV</a></li>
</ul>
</nav>
<section>
<aside>
<h1>À propos de l'auteur</h1>
<p>C'est moi, Zozor ! Je suis né un 23 novembre 2005.</p>
</aside>
<article>
<h1>Je suis un grand voyageur</h1>
<p>Bla bla bla bla (texte de l'article)</p>
</article>
</section>
<footer>
<p>Copyright Zozor - Tous droits réservés<br />
<a href="#">Me contacter !</a></p>
</footer>
</body>
</html>
Ce code peut vous aider à comprendre comment les balises doivent être agencées. Vous y reconnaissez un entête,
un menu de navigation, un pied de page… et, au centre, une section avec un article et un bloc <aside> donnant
des informations sur l'auteur de l'article.
À rien !
Si vous testez le résultat, vous verrez juste du texte noir sur fond blanc (figure suivante). C'est normal, il n'y a pas
de CSS ! Par contre, la page est bien structurée, ce qui va nous être utile pour la suite.
Une page bien structurée mais sans CSS
Les liens sont volontairement factices (d'où la présence d'un simple #), ils n'amènent donc nulle part (eh,
c'est juste une page de démo) !
Je ne comprends pas l'intérêt de ces balises. On peut très bien obtenir le même résultat sans les utiliser !
C'est vrai. En fait, ces balises sont seulement là pour expliquer à l'ordinateur « Ceci est l'en-tête », « Ceci est mon
pied de page », etc. Elles n'indiquent pas, contrairement à ce qu'on pourrait penser, où doit être placé le contenu.
C'est le rôle du CSS, comme nous le verrons dans peu de temps maintenant.
À l'heure actuelle, pour tout vous dire, ces balises ont encore assez peu d'utilité. On pourrait très bien utiliser des
balises génériques <div> à la place pour englober les différentes portions de notre contenu. D'ailleurs, c'est
comme cela qu'on faisait avant l'arrivée de ces nouvelles balises HTML5.
Néanmoins, il est assez probable que, dans un futur proche, les ordinateurs commencent à tirer parti
intelligemment de ces nouvelles balises. On peut imaginer par exemple un navigateur qui choisisse d'afficher les
liens de navigation <nav> de manière toujours visible ! Quand l'ordinateur « comprend » la structure de la page,
tout devient possible.
En résumé
• Plusieurs balises ont été introduites avec HTML5 pour délimiter les différentes zones qui constituent la
page web :
o <header> : en-tête ;