Exercices CSS Niveau 2
Exercices CSS Niveau 2
d'Exercices en
Programmation : Le
langage CSS
Niveau 2
METHODOLOGIE
Après avoir réalisé tous les exercices de chaque chapitre vous allez pouvoir
vérifier les compétences acquises à l'aide des exercices synthèses, des
questions Quizz, etc.
Chaque point de matière acquis dans un exercice peut être utilisé dans des
exercices suivants sans explication.
Table des matières
................................................................................................................... 4
1
............................................................................................................. 40
2
..................................................................................................................................... 82
3
4
Chapitre 1 : Structurer sa 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.
Au point suivant, tu vas essayer d'utiliser des balises que tu vas découvrir pour
structurer ta page web.
5
Les balises structurantes de l'HTML5
<Header> : l'en-tête
Passe pour cela beaucoup de lignes "ENTER" afin d'arriver comme ci-dessous
6
<nav> : principaux liens de navigation
La balise <nav> doit regrouper tous les principaux liens de navigation du site. On y
place par exemple le menu principal du site.
Les liens sont volontairement factices (d'où la présence d'un simple #), ils
n'amènent donc nulle part (eh, c'est juste un exercice découverte) !
7
Remarque : 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, on peut donc 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.
Rien à insérer de plus dans ta page Web car ce point a déjà été réalisé
précédemment.
8
<article> : un article indépendant
Rien à insérer de plus dans ta page Web car ce point a déjà été réalisé
précédemment.
Exercice complet :
9
Pour l'instant la page Web ne ressemble à rien mais ne t'inquiète pas
nous allons modifier cela dans les chapitres suivants.
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 ;
o <footer> : pied de page ;
o <nav> : liens principaux de navigation ;
o <section> : section de page ;
o <aside> : informations complémentaires ;
o <article> : article indépendant.
Ces balises peuvent être imbriquées les unes dans les autres. Ainsi, une
section peut avoir son propre en-tête.
Ces balises ne s'occupent pas de la mise en page. Elles servent seulement à
indiquer à l'ordinateur le sens du texte qu'elles contiennent. On pourrait
très bien placer l'en-tête en bas de la page si on le souhaite.
10
Chapitre 2 : Le modèle des boîtes
Une page web peut être vue comme une succession et un empilement de boîtes,
qu'on appelle « blocs ». La plupart des éléments vus au chapitre précédent sont
des blocs : <header>, <article>, <nav>…
Mais nous connaissions déjà d'autres blocs : les paragraphes <p>, les titres <h1>…
Nous allons apprendre à manipuler ces blocs comme de véritables boîtes. Nous
allons leur donner des dimensions, les agencer en jouant sur leurs marges, mais
aussi apprendre à gérer leur contenu… pour éviter que le texte ne dépasse de
ces blocs !
Ce sont des notions fondamentales dont nous allons avoir besoin pour mettre en
page notre site web… Cela se complique !
En HTML, la plupart des balises peuvent se ranger dans l'une ou l'autre de deux
catégories :
Les balises inline : c'est le cas par exemple des liens <a> </a>.
Les balises block : c'est le cas par exemple des paragraphes <p> </p>.
block : une balise de type block sur votre page web crée automatiquement
un retour à la ligne avant et après. Il suffit d'imaginer un bloc. Votre page
web sera en fait constituée d'une série de blocs les uns à la suite des
autres. Mais vous verrez qu'en plus, il est possible de mettre un bloc à
l'intérieur d'un autre, ce qui va augmenter considérablement nos
possibilités pour créer le design de notre site !
inline : une balise de type inline se trouve obligatoirement à l'intérieur
d'une balise block. Une balise inline ne crée pas de retour à la ligne, le
texte qui se trouve à l'intérieur s'écrit donc à la suite du texte
précédent, sur la même ligne (c'est pour cela que l'on parle de balise « en
ligne »).
11
Voici un petit schéma à la figure suivante :
Type Block
Type Inline
Comme on peut le voir, les blocs sont les uns en-dessous des autres. On peut
aussi les imbriquer les uns à l'intérieur des autres (blocs <section> contiennent
par exemple des blocs <aside> !).
La balise inline <a> </a>, elle, se trouve à l'intérieur d'une balise block et le texte
vient s'insérer sur la même ligne.
Autres exemples :
12
Les balises universelles
Ce sont des balises qui n'ont aucun sens particulier (contrairement à <p> qui veut
dire « paragraphe », <strong> « important », etc.).
Le principal intérêt de ces balises est que l'on peut leur appliquer une class (ou
une id) pour le CSS quand aucune autre balise ne convient.
Il existe deux balises génériques et, comme par hasard, la seule différence
entre les deux est que l'une d'elle est inline et l'autre est block :
Les dimensions
13
Exercices :
Tu vas créer et joindre à ton site Web un fichier CSS nommé Mon [Link]
Fichier CSS :
Afin de modifier la largeur des paragraphes. Le CSS suivant dit : « Je veux que
tous mes paragraphes aient une largeur de 50% » + autres attributs.
Regarde le résultat.
Minimum et maximum
14
Par exemple, on peut demander à ce que les paragraphes occupent 50% de la
largeur et exiger qu'ils fassent au moins 200 pixels de large dans tous les cas :
Les marges
Il faut savoir que tous les blocs possèdent des marges. Il existe deux types de
marges :
Regarde ce schéma :
15
En CSS, on peut modifier la taille des marges avec les deux propriétés suivantes
:
Il est tout à fait possible de centrer des blocs. C'est même très pratique pour
réaliser un design centré quand on ne connaît pas la résolution du visiteur.
16
Quand ça dépasse… : Overflow
Lorsqu'on commence à définir des dimensions précises pour nos blocs, comme on
vient de le faire, il arrive qu'ils deviennent trop petits pour le texte qu'ils
contiennent.
Les propriétés CSS que tu vas découvrir ici ont été créées pour contrôler les
dépassements… et décider quoi faire si jamais cela devait arriver.
17
Voici les modifications apportées :
Si vous devez placer un mot très long dans un bloc, qui ne tient pas dans la
largeur, vous allez adorer word-wrap. Cette propriété permet de forcer la
césure des très longs mots (généralement des adresses un peu longues).
La figure suivante représente ce que l'on peut avoir quand on écrit une URL un
peu longue dans un bloc.
18
En résumé
19
Chapitre 3 : La mise en page avec
Flexbox
Sur une même page web, vous pouvez sans problème avoir plusieurs conteneurs.
20
Pour ce chapitre crée un nouveau fichier HTML nommé Flexbox et un fichier
CSS nommé Style Flexbox.
Exécute ton fichier HTML. Les blocs se positionnent ici les uns en dessous des
autres.
21
Les directions et le sens
Les blocs se placeront maintenant les uns à la suite des autres sur une même
ligne.
Pour changer leur alignement, on va utiliser justify-content, qui peut prendre ces
valeurs :
22
Voici un exemple :
Et si on inversait tout.
23
Le retour à la ligne
Par défaut, les blocs essaient de rester sur la même ligne s'ils n'ont pas la place
(ce qui peut provoquer des bugs de design parfois). Les blocs peuvent aller à la
ligne lorsqu'ils n'ont plus la place avec flex-wrap qui peut prendre ces valeurs :
Et encore, et encore …
En résumé
24
Chapitre 4 : Autres techniques de mise
en page
25
Ajoute ces lignes dans le fichier CSS.
Explications :
Il y a deux défauts (mis à part le fait que c'est encore bien moche) :
On veut bien que le pied de page (« Copyright Zozor ») soit placé en bas sous le
menu mais, par contre, on aimerait que tout le corps de page soit constitué d'un
seul bloc placé à droite.
Pour résoudre ces deux problèmes d'un seul coup, il faut ajouter une marge
extérieure à gauche de notre <section>, marge qui doit être par ailleurs
supérieure à la largeur du menu. Si notre menu fait 150 px, nous allons par
exemple donner une marge extérieure gauche de 170 px à notre section de page.
26
Transformer les éléments avec display
Les lois du CSS vont être ici changées (brrr…). Il faut s'accrochers !
Il existe en CSS une propriété très puissante : display. Elle est capable de
transformer n'importe quel élément de votre page d'un type vers un autre. Avec
cette propriété magique, je peux par exemple imposer à mes liens (originellement
de type inline) d'apparaître sous forme de blocs :
À ce moment-là, les liens vont se positionner les uns en-dessous des autres
(comme des blocs normaux) et il devient possible de modifier leurs dimensions !
Voici quelques-unes des principales valeurs que peut prendre la propriété display
en CSS (il y en a encore d'autres) :
27
Le positionnement inline-block
Ils se positionnent les uns à côté des autres; (placer un menu et un corps
sur une page !).
On peut leur donner des dimensions précises ;
Je crois que c'est ce que l'on veut.
Nous allons transformer en inline-block les deux éléments que nous voulons
placer côte à côte : le menu de navigation et la section du centre de la page.
28
Le fait d'avoir transformé les éléments en inline-block nous permet d'utiliser
une nouvelle propriété, normalement réservée aux tableaux : vertical-align. Cette
propriété permet de modifier l'alignement vertical des éléments. Voici quelques-
unes des valeurs possibles pour cette propriété :
Peut-être aucune modification n'a été visible. Mais grâce à ces deux lignes
ajoutées les deux éléments seront toujours alignés avec le positionnement
désiré.
29
Les positionnements absolu, fixe et relatif
Il faut faire son choix entre les trois modes de positionnement disponibles. Pour
cela, on utilise la propriété CSS position à laquelle on donne une de ces valeurs :
Le positionnement absolu
30
Il est possible de placer des éléments l'un au-dessus de l'autre à l'aide de la
propriété z-index=1,2,3,4, …
L'élément ayant la valeur de z-index la plus élevée sera placé par-dessus les
autres.
Le positionnement fixe
Le principe est exactement le même que pour le positionnement absolu sauf que,
cette fois, le bloc reste fixe à sa position, même si on descend plus bas dans la
page.
On ne testera pas cette propriété qui je crois n'est pas trop difficile à
comprendre (position: fixed;)
Le positionnement relatif
Prenons par exemple un texte important, situé entre deux balises <strong>. Pour
commencer, je le mets sur fond rouge pour qu'on puisse mieux le repérer :
Fichier HTML :
31
Fichier CSS :
Donc si tu fais position: relative; et que tu appliques une des propriétés top, left,
right ou bottom, le texte sur fond rouge va se déplacer par rapport à la position
où il se trouve.
Prenons un exemple : je veux que mon texte se décale de 55 pixels vers la droite
et de 10 pixels vers le bas. Je vais donc demander à ce qu'il soit décalé de 55
pixels par rapport au « bord gauche » et de 10 pixels par rapport au « bord haut
» (lignes 6 à 8) :
Résultat :
32
En résumé
33
Chapitre 5 : Exercices
Il faut retrouver sur ta page Web les points suivants. Ceux-ci montreront que la
matière à bien été acquise.
34
Avant de commencer, tu dois créer un fichier HTML nommé : Index Leblog
Dans la suite du travail des éléments devront être modifiés, ajoutés ou supprimés.
Créer aussi un fichier CSS nommé : Style Leblog pour l'instant vide.
35
Chapitre 5 : Solutions
Placer le header et le menu côte à côte. Créer une bordure autour de ces 2
éléments et ajouter une couleur de fond différente à chacun de ceux-ci.
Fichier HTML :
36
Fichier CSS :
37
Le plus gros point à réaliser (en CSS):
1. Afficher les paragraphes en justifié
2. Définir une largeur et une hauteur bien spécifique aux paragraphes
(550px, 120px)
3. Centrer les paragraphes dans leur bloc
4. Associer une couleur de fond identique pour les paragraphes
5. Souligner les titres H1 des paragraphes en rouge (en CSS)
6. Créer des espacements </br> afin d'éclaircir la page
7. Choisir une police Comic Sans MS
Fichier HTML :
38
Fichier CSS :
39
40
Chapitre 6 : Les tableaux
Indispensables pour organiser les informations, les tableaux sont un peu délicats
à construire en HTML. Il va en effet falloir imbriquer de nouvelles balises HTML
dans un ordre précis.
Nous allons commencer par construire des tableaux basiques, puis nous les
complexifierons au fur et à mesure : fusion de cellules, division en multiples
sections, etc. Nous découvrirons aussi les propriétés CSS liées aux tableaux, qui
nous permettront de personnaliser leur apparence.
Un tableau simple
La première balise à connaître est <table> </table>. C'est cette balise qui permet
d'indiquer le début et la fin d'un tableau.
Cette balise est de type bloc, il faut donc la placer en dehors d'un paragraphe.
Voici un exemple que tu peux insérer dans un nouvel exercice HTML que tu peux
intituler Fonctionnalités évoluées. N'oublie pas de créer aussi un fichier CSS de
même nom qui sera associé au fichier HTML.
Fichier HTML
41
Le fichier CSS est vide.
Tu vas créer un tableau avec des élèves de mon cours en informatique + lien à
partir de la section de ta page (menu) vers une ancre.
42
La ligne d'en-tête
Titre du tableau
Heureusement, il y a <caption>!
Cette balise se place tout au début du tableau, juste avant l'en-tête. C'est elle
qui contient le titre du tableau :
43
Un tableau structuré
Pour les gros tableaux, il est possible de les diviser en trois parties :
o En-tête ;
o Corps du tableau ;
o Pied de tableau.
Pour certains tableaux, il se peut que vous ayez besoin de fusionner des
cellules entre elles.
Si ton tableau est assez gros, tu auras tout intérêt à le découper en plusieurs
parties. Pour cela, il existe des balises HTML qui permettent de définir les trois
« zones » du tableau :
44
45
Fusionner
46
Un élément manque pour Lucky Luke, une fusion de la dernière ligne sera réalisée
à l'aide de <td colspan="2">Pour toute la famille !</td>.
Exercice :
Crée maintenant un nouveau tableau qui sera inversé. Les titres seront à gauche
et tu ne vas donc plus utiliser la fusion horizontale mais verticale.
Ajoute une ligne dans le menu de navigation et modifie les titres de ces menus
pour qu'ils soient plus explicites.
47
Nouveau menu :
Nouveau tableau :
48
En résumé
Un tableau s'insère avec la balise <table> et se définit ligne par ligne avec
<tr>.
Chaque ligne comporte des cellules <td> (cellules normales) ou <th> (cellules
d'en-tête).
Le titre du tableau se définit avec <caption>.
On peut ajouter une bordure aux cellules du tableau avec border. Pour
fusionner les bordures, on utilise la propriété CSS border-collapse.
Un tableau peut être divisé en trois sections :<thead> (en-tête), <tbody>
(corps) et <tfoot> (bas du tableau). L'utilisation de ces balises n'est pas
obligatoire.
On peut fusionner des cellules horizontalement avec l'attribut colspan ou
verticalement ave crowspan. Il faut indiquer combien de cellules doivent être
fusionnées.
49
Chapitre 7 : Les formulaires
Ce chapitre a déjà été travaillé dans le cours HTML donc le but de celui-ci est
devoir d'une manière rapide ce qui a été vu et d'approfondir ce qui n'a pas
encore été découvert.
Créer un formulaire
Voici un exemple que tu peux insérer dans un nouvel exercice HTML que tu peux
intituler Les formulaires. N'oublie pas de créer aussi un fichier CSS de même
nom qui sera associé au fichier HTML.
50
Zone de texte monoligne
Pour créer une zone de texte à une ligne et lui donner un nom :
Les libellés
Cette zone de texte est bien jolie mais si votre visiteur tombe dessus, il ne sait
pas ce qu'il doit écrire. C'est justement le rôle de la balise :
Pour ne pas causer de problème il faut donner le même nom aux deux attributs
(name et id).
Pour lier le label au champ, il faut lui donner un attribut for qui a la même valeur
que l'id du champ…
On peut ajouter un certain nombre d'autres attributs à la balise <input /> pour
personnaliser son fonctionnement :
51
Voici du code afin de compléter ton travail :
52
Les zones de saisie enrichies
HTML vous offre une ribambelle d'éléments d'options à utiliser dans votre
formulaire. Ce sont des éléments qui demandent au visiteur de faire un choix
parmi une liste de possibilités. Nous allons passer en revue :
Tu peux faire en sorte qu'une case soit cochée par défaut avec l'attribut
checked.
53
Les zones d'options
Les boutons font tous partis d'un même groupe. Chaque zone d'options
différente doit posséder un nom unique.
Si vous voulez qu'une option soit sélectionnée par défaut, utilisez cette fois
l'attribut selected.
54
On peut aussi grouper les options :
55
Finaliser et envoyer le formulaire
Nous y sommes presque. Il ne nous reste plus qu'à agrémenter notre formulaire
de quelques dernières fonctionnalités (comme la validation), puis nous pourrons
ajouter le bouton d'envoi du formulaire.
56
À l'aide de l'attribut required, un champ sera obligatoire.
Et pour qu'un champ obligatoire soit d'une autre couleur de fond, tu peux
ajouter dans ton fichier CSS :
Bouton d'envoi
Le problème, c'est que vous ne pouvez pas créer cette page seulement en HTML.
Il est nécessaire d'apprendre un nouveau langage, comme le PHP, pour pouvoir «
récupérer » les informations saisies et décider quoi en faire.
En résumé
57
On peut rendre un champ obligatoire avec l'attribut required, faire en
sorte qu'il soit sélectionné par défaut avec autofocus, donner une
indication dans le champ avec placeholder…
Pour récupérer ce que les visiteurs ont saisi, le langage HTML ne suffit
pas. Il faut utiliser un langage « serveur » comme PHP.
58
Chapitre 8 : La vidéo et l'audio
Depuis l'arrivée de Youtube et Dailymotion, il est devenu courant aujourd'hui de
regarder des vidéos sur des sites web.
C'est pour cela que deux nouvelles balises standard ont été créées en HTML5 :
<video> et <audio>!
MP3 : C'est l'un des plus vieux, mais aussi l'un des plus compatibles (tous
les appareils savent lire des MP3), ce qui fait qu'il est toujours très utilisé
aujourd'hui.
AAC : utilisé majoritairement par Apple sur iTunes, c'est un format de
bonne qualité. Les iPod, iPhone et autres iPad savent les lire sans
problème.
OGG : le format Ogg Vorbis est très répandu dans le monde du logiciel
libre, notamment sous Linux. Ce format a l'avantage d'être libre, c'est-à-
dire qu'il n'est protégé par aucun brevet.
WAV (format non compressé) : évitez autant que possible de l'utiliser
car le fichier est très volumineux avec ce format.
La compatibilité dépend des navigateurs, mais elle évolue dans le bon sens au fil
du temps. Pense à consulter [Link] pour connaître la compatibilité actuelle
du MP3, AAC, OGG, WAV...
59
Les formats vidéo
Pour convertir une vidéo dans ces différents formats, je te conseille l'excellent
logiciel gratuit Miro Video Converter (pour Mac OS X – pour Windows).
60
Insertion d'un élément audio
<audio src="musique.mp3"></audio>
61
Crée un nouveau fichier HTML comme celui-ci-dessous afin de tester cette
balise :
Trouve un fichier audio et adapte le code en fonction de ton choix. L'audio doit-
être dans un dossier Audio pour l'exercice Teste la page.
62
Voici ce que tu obtiens en lançant ta page à partir de Google Chrome.
Microsoft Edge :
63
Si le navigateur ne gère pas le mp3 tu peux aussi proposer plusieurs versions du
fichier audio en écrivant :
<video src="[Link]"></video>
poster: image à afficher à la place de la vidéo tant que celle-ci n'est pas
lancée. Par défaut, le navigateur prend la première image de la vidéo mais,
comme il s'agit souvent d'une image noire ou d'une image peu
représentative de la vidéo, je vous conseille d'en créer une ! Vous pouvez
tout simplement faire une capture d'écran d'un moment de la vidéo.
controls: pour ajouter les boutons « Lecture », « Pause » et la barre de
défilement. Cela peut sembler indispensable, mais certains sites web
préfèrent créer eux-mêmes leurs propres boutons et commander la
lecture avec du JavaScript. En ce qui nous concerne, ce sera largement
suffisant !
width: pour modifier la largeur de la vidéo.
height: pour modifier la hauteur de la vidéo.
loop: la vidéo sera jouée en boucle.
autoplay: la vidéo sera jouée dès le chargement de la page. Là encore,
évitez d'en abuser, c'est en général irritant d'arriver sur un site qui lance
quelque chose tout seul !
preload: indique si la vidéo peut être préchargée dès le chargement de la
page ou non. Cet attribut peut prendre les valeurs :
o auto(par défaut) : le navigateur décide s'il doit précharger toute la
vidéo, uniquement les métadonnées ou rien du tout.
o metadata: charge uniquement les métadonnées (durée, dimensions,
etc.).
o none: pas de préchargement. Utile si vous souhaitez éviter le
gaspillage de bande passante sur votre site.
64
Voici un exemple :
Trouve un fichier vidéo et adapte le code en fonction de ton choix. La vidéo doit-
être dans un dossier Vidéo pour l'exercice. Teste la page.
65
En résumé
66
Chapitre 9 : Le responsive design avec
les Media Queries
Sais-tu quelle est la première préoccupation des webmasters qui mettent en
place le design de leur site ? La résolution d'écran de leurs visiteurs. Eh oui :
selon les écrans, il y a plus ou moins de place, plus ou moins de pixels de largeur.
C'est là que les media queries entrent en jeu. Ce sont des règles à appliquer pour
changer le design d'un site en fonction des caractéristiques de l'écran ! Grâce à
cette technique, nous pourrons créer un design qui s'adapte automatiquement à
l'écran de chaque visiteur !
Les media queries font partie des nouveautés de CSS3. Il ne s'agit pas de
nouvelles propriétés mais de règles que l'on peut appliquer dans certaines
conditions. Concrètement, tu auras le pouvoir de dire « Si la résolution de l'écran
du visiteur est inférieure à tant, alors applique les propriétés CSS suivantes ».
Cela te permet de changer l'apparence du site dans certaines conditions : tu
pourras augmenter la taille du texte, changer la couleur de fond, positionner
différemment menu dans certaines résolutions, etc.
Contrairement à ce qu'on pourrait penser, les media queries ne concernent pas
que les résolutions d'écran. Tu peux changer l'apparence de ton site en fonction
d'autres critères comme le type d'écran (smartphone, télévision, projecteur…),
le nombre de couleurs, l'orientation de l'écran (portrait ou paysage), etc. Les
possibilités sont très nombreuses !
67
Appliquer une media query
Les media queries sont donc des règles qui indiquent quand on doit appliquer des
propriétés CSS.
Tu te souviens de la balise <link /> qui permet, dans notre code HTML, de charger
un fichier .css ?
On peut lui ajouter un attribut media, dans lequel on va écrire la règle qui doit
s'appliquer pour que le fichier soit chargé. On dit qu'on fait une « requête de
media » (media query en anglais). Voici un exemple :
68
Chargement des règles directement dans la feuille de style
Une autre technique plus pratique, consiste à écrire ces règles dans le même
fichier CSS que d'habitude.
Dans ce cas, on écrit la règle dans le fichier .css comme ceci :
Modifie ton fichier HTML pour qu'une seule référence se réalise vers le fichier
CSS.
69
NB : On peut rajouter le préfixe min- ou max- devant la plupart de ces règles.
Ainsi, min-width signifie « Largeur minimale », max-height « Hauteur maximale »,
etc.
La différence entre width et device-width se perçoit surtout sur les navigateurs
mobiles des smartphones, nous en reparlerons plus loin.
only : « uniquement » ;
and : « et » ;
not : « non ».
70
Tester les media queries
Les media queries sont surtout utilisées pour adapter le design du site aux
différentes largeurs d'écran.
p
{
color: blue;
}
Que se passe-t-il ?
71
Mise en pratique des media queries sur le design
La page
Ouvre le fichier [Link]. Pour le moment, la largeur de la page est fixée à 900
px et le contenu est centré :
Les règles CSS en question sont très simples, il n'y en a en fait qu'une seule : on
donne une largeur automatique à la page (plutôt qu'une largeur fixe de 900 px).
La page prendra alors tout l'espace disponible dans la fenêtre. Cela évite
l'apparition de barres de défilement horizontales sur les petites résolutions.
NB : auto est la valeur par défaut de la propriété width. Par défaut, les blocs ont
une largeur automatique (ils prennent toute la place disponible). Cette valeur «
écrase » celle que nous avions forcée à 900px quelques lignes plus haut : nous
revenons donc au comportement par défaut du bloc.
72
Le menu de navigation
Nous voulons que le menu de navigation prenne moins de place sur les petites
résolutions. Plutôt que de lui donner une dimension fixe, nous allons lui redonner
sa dimension automatique flexible d'origine. Chaque élément du menu s'écrira en
dessous du précédent : pour cela, nous demandons à ce que les éléments de la
Flexbox soit organisés en colonne.
Enfin, le texte sera écrit plus petit et nous retirons la bordure en bas des liens
lors du survol, car elle est moins adaptée à cette disposition.
73
La bannière
Pour retirer la bannière, rien de plus simple : nous utilisons la propriété display à
laquelle nous affectons la valeur none. Si la fenêtre est trop petite, nous
préférons masquer complètement la bannière :
Plutôt que de placer ce bloc à droite de l'article, nous allons le faire passer en-
dessous grâce à des Flexbox en colonne. Ce type de disposition « de haut en bas
» est plus adapté aux petits écrans.
74
NB : aside est un sélecteur avancé que nous n'avons pas utilisé jusqu'ici. aside p
signifie « Tous les paragraphes à l'intérieur de la balise <aside> ». Avec :last-
child, on cible uniquement le dernier paragraphe dans le bloc aside (celui qui
contient les liens vers Facebook et Twitter), pour pouvoir centrer les images.
Bien entendu, on aurait aussi pu affecter une class ou un id à ce paragraphe pour
le cibler directement, mais je n'ai pas voulu modifier le code HTML.
En résumé
75
Chapitre 10 : Aller plus loin
Alors que ce cours touche à sa fin, la tentation est grande de penser que l'on a
tout vu. Tout vu ? Vous n'avez quand même pas cru cela ? Allons bon, il vous
reste des centaines de choses à découvrir, que ce soit sur HTML, CSS, ou les
technologies qui y sont liées (PHP, JavaScript…).
Ce chapitre a pour but de vous donner quelques directions pour compléter votre
apprentissage. Alors ne soyez pas tristes, car vous n'avez pas fini de faire des
découvertes !
À quoi JavaScript peut-il bien servir ? On ne peut pas tout faire avec HTML et
CSS ?
On peut faire déjà beaucoup de choses en HTML et CSS mais, lorsqu'on veut
rendre sa page plus interactive, un langage comme JavaScript devient
indispensable.
On l'utilisera le plus souvent pour modifier des propriétés CSS sans avoir
à recharger la page. Par exemple, vous pointez sur une image et le fond de
votre site change de couleur (ce n'est pas possible à faire avec un :hover
car cela concerne deux balises différentes, c'est bien là une limite du
CSS).
On peut l'utiliser aussi pour modifier le code source HTML sans avoir à
recharger la page, pendant que le visiteur consulte la page.
Il permet aussi d'afficher des boîtes de dialogue à l'écran du visiteur…
… ou encore de modifier la taille de la fenêtre.
76
JavaScript est un langage qui se rapproche des langages de programmation tels
que le C, C++, Python, Ruby… À l'inverse, HTML et CSS sont davantage des
langages de description : ils décrivent comment la page doit apparaître mais ils
ne donnent pas d'ordres directs à l'ordinateur (« fais ceci, fais cela… »),
contrairement à JavaScript.
JavaScript n'a aucun rapport avec le langage Java. Seuls les noms se
ressemblent.
Le W3C ne travaille pas que sur les langages HTML et CSS. Ce sont certes les
plus connus, mais le W3C cherche aussi à définir d'autres technologies qui
viennent compléter HTML et CSS. Elles sont nombreuses et on les confond
d'ailleurs souvent avec HTML5.
En fait, HTML5 est devenu un mot très utilisé qui fait référence à d'autres
technologies que HTML. Quand quelqu'un vous parle de « HTML5 » aujourd'hui, il
fait peut-être aussi référence à d'autres éléments qui sortent du cadre strict
du HTML.
77
Voici une petite liste de ces nouvelles technologies introduites en parallèle de
HTML5 (notez que certaines ne sont pas vraiment « nouvelles » mais elles
reviennent sur le devant de la scène) :
78
WebGL : permet d'introduire de la 3D dans les pages web, en utilisant le
standard de la 3D OpenGL (figure suivante). Les scènes 3D sont
directement gérées par la carte graphique.
Les langages dont nous allons parler ici sont eux aussi des langages de
programmation. Comme JavaScript ? Oui, mais avec une différence importante :
JavaScript s'exécute sur la machine de tes visiteurs, tandis que les langages que
nous allons voir s'exécutent sur le « serveur » qui contient ton site web.
Quelle différence cela fait-il que le programme tourne sur la machine du visiteur
ou sur le serveur ?
79
Les langages ne servent donc pas aux mêmes choses, mais ils se complètent. Si tu
combines HTML + CSS + JavaScript + PHP, par exemple, tu peux faire de l'AJAX
(échanges de données entre la page et le serveur), tu peux effectuer des calculs,
stocker des informations dans des bases de données… bref, faire de vrais sites
web dynamiques !
PHP : l'un des plus connus. Facile à utiliser et puissant, il est utilisé
notamment par Facebook… et OpenClassrooms. Un cahiers sur PHP peut
être consulté si tu as envie d'apprendre plus.
Java EE (Java) : très utilisé dans le monde professionnel, il s'agit d'une
extension du langage Java qui permet de réaliser des sites web
dynamiques, puissants et robustes. Au début, il est un peu plus complexe à
prendre en main que PHP.
ASP .NET (C#) : assez semblable à JEE, c'est le langage de Microsoft.
On l'utilise en combinaison avec d'autres technologies Microsoft
(Windows Server…). Il utilise le puissant framework .NET, véritable
couteau suisse des développeurs, qui offre de nombreuses fonctionnalités.
Django (Python) : une extension du langage Python qui permet de réaliser
rapidement et facilement des sites web dynamiques. Il est connu pour
générer des interfaces d'administration prêtes à l'emploi.
Ruby on Rails (Ruby) : une extension du langage Ruby, assez similaire à
Django, qui permet de réaliser des sites web dynamiques facilement et
avec une grande souplesse.
Connaître l'un de ces langages est indispensable si tu veux traiter le résultat des
formulaires HTML ! Souviens-toi de la balise <form> : je t'avais expliqué
comment créer des formulaires, mais pas comment récupérer les informations
saisies par tes visiteurs. Il te faut obligatoirement un langage serveur, comme
PHP, pour récupérer et traiter ces données !
Au final, ces langages te permettent de réaliser des rêves les plus fous sur ton
site web :
forums ;
newsletter ;
compteur de visiteurs ;
système de news automatisé ;
80
gestion de membres ;
jeux web (jeux de stratégie, élevage d'animaux virtuels…) ;
etc.
81
82
Chapitre 11 : Envoyer ton site Web
Une fois un site terminé, il ne doit pas rester rien que sur votre disque dur car
personne d'autre ne va pouvoir en profiter.
Il faut donc l'envoyer sur le Web, mais… vous ne savez pas comment faire.
Nous allons découvrir dans cette annexe tout ce qu'il faut savoir pour envoyer
son site sur le Web :
Le nom de domaine
NB : En général, un site web voit son adresse précédée par www, comme par
exemple [Link]. Cela ne fait pas partie du nom de domaine : en fait,
www est ce qu'on appelle un sous-domaine, et on peut en théorie en créer autant
qu'on veut une fois qu'on est propriétaire du nom de domaine.
Le www est présent sur la plupart des sites web, c'est une sorte de convention,
mais elle n'est absolument pas obligatoire.
83
Comment réserver son nom de domaine.
Quand tu crées un site chez par exemple Jimdo, Wix, 1&1, etc une version
gratuite de ton nom de domaine et de son hébergement existe. Mais tu peux
payer par an une modique somme afin d'avoir plus d'espace, plus de choix dans
des modèles, plus de polices, etc.
Le code que tu viens d'apprendre permettra d'améliorer ton site bien que
beaucoup d'options te seront proposées gratuitement.
L'hébergeur
Sur Internet, tous les sites web sont stockés sur des ordinateurs particuliers
appelés serveurs. Ce sont des ordinateurs généralement très puissants, qui
restent tout le temps allumés. Ils contiennent les pages des sites web et les
délivrent aux internautes qui les demandent, à toute heure du jour et de la nuit.
84
Ces baies se situent dans des lieux particuliers appelés datacenters. Les
datacenters sont donc en quelque sorte des « entrepôts à serveurs » et leur
accès est très protégé.
85
Utiliser un client FTP
FTP signifie File Transfer Protocol et, pour faire court et simple, c'est le
moyen que l'on utilise pour envoyer nos fichiers.
Il existe des logiciels permettant d'utiliser le FTP pour transférer vos fichiers
sur Internet.
Bien entendu, des logiciels FTP, il en existe des centaines, gratuits, payants,
français, anglais, etc.
Pour que nous soyons sur la même longueur d'onde, je vais vous proposer celui
que j'utilise, qui est gratuit et en français : FileZilla (figure suivante).
Télécharger FileZilla
86
2. À gauche, c'est ton disque dur. Dans la partie du haut, tu as les dossiers
et, dans la partie du bas, la liste des fichiers du dossier actuel.
3. À droite, c'est la liste des fichiers envoyés sur le serveur sur Internet.
Pour le moment il n'y a rien car on ne s'est pas connecté, mais cela va
venir, aucune inquiétude.
4. Enfin, en bas, tu verras apparaître les fichiers en cours d'envoi (et le
pourcentage d'envoi).
Quel que soit l'hébergeur que tu as choisi, cela fonctionne toujours de la même
manière. On va te fournir trois informations qui sont indispensables pour que
FileZilla puisse se connecter au serveur :
Maintenant que nous sommes en possession de ces informations, nous allons les
donner à FileZilla, qui en a besoin pour se connecter au serveur.
Cliquez sur la petite icône en haut à gauche (pas sur la petite flèche à droite,
mais bien sur l'image), représentée à la figure suivante.
87
Une fenêtre s'ouvre. Cliquez sur Nouveau site et donne-lui le nom que tu veux
(par exemple « Mon site »). À droite, tu vas devoir indiquer les trois
informations dont je viens de vous parler, comme à la figure suivante.
Si la connexion a réussi, alors ce que tu as à faire est très simple : dans la partie
de gauche, cherches où se trouvent, sur ton disque dur, ton fichiers .html et
.css (mais aussi les [Link],.png,.gif, etc.).
À gauche, fais un double-clic sur le fichier que tu vas transférer. Au bout de
88
quelques secondes, il apparaîtra à droite, ce qui voudra dire qu'il a été
correctement envoyé sur le serveur, et donc qu'il est accessible sur Internet !
À noter qu'il faut que la page d'accueil s'appelle [Link]. C'est la page qui
sera chargée lorsqu'un nouveau visiteur arrivera sur ton site.
En résumé
Pour le moment, ton site web n'est visible que par toi, sur ton ordinateur.
Il faut l'envoyer sur le Web pour qu'il soit visible par tout le monde.
Tu as besoin de deux éléments :
o Un nom de domaine : c'est l'adresse de ton site web. Tu peux
réserver une adresse en .com, .fr, .net… Par exemple : [Link].
o Un hébergeur : c'est lui qui va stocker ton site web sur une machine
appelée « serveur ». Son rôle sera d'envoyer ton site à tes visiteurs
à toute heure du jour et de la nuit.
Pour transmettre les fichiers de ton site au serveur de ton hébergeur, il
faut utiliser un client FTP comme FileZilla.
Pour te connecter au serveur, tu as besoin de trois informations :
l'adresse IP du serveur (ou son nom d'hôte), ton login et ton mot de passe.
Ceux-ci vous sont fournis par ton hébergeur.
89
Chapitre 12 : Mémento des balises
HTML
Tu trouveras ici un grand nombre de balises HTML
90
Balises d'en-tête
Ces balises sont toutes situées dans l'en-tête de la page web, c'est-à-dire entre
<head> et </head> :
91
92
Balises de listes
Cette section énumère toutes les balises HTML permettant de créer des listes
(listes à puces, listes numérotées, listes de définitions…)
Balises de tableau
93
Balises de formulaire
Balises sectionnantes
94
Balises génériques
Les balises génériques sont des balises qui n'ont pas de sens sémantique.
En effet, toutes les autres balises HTML ont un sens : <p> signifie « Paragraphe
», <h2> signifie « Sous-titre », etc.
Parfois, on a besoin d'utiliser des balises génériques (aussi appelées balises
universelles) car aucune des autres balises ne convient. On utilise le plus souvent
des balises génériques pour construire son design.
Ces trois attributs ne sont pas réservés aux balises génériques : tu peux aussi
les utiliser sans aucun problème dans la plupart des autres balises.
95
Chapitre 13 : Mémento des propriétés
CSS
Tu trouveras ici un grand nombre de propriétés CSS
96
Propriétés de couleur et de fond
97
Propriétés des boîtes
98
99
Propriétés de positionnement et d'affichage
100
Propriétés des tableaux
Autres propriétés
101
Bibliographie
- Réalisez votre site Web avec l'HTML 5 – Mathieu Nebra – Le Livre du zéro
- HTML5 et CSS3 : Maîtrisez les standards des applications Web 2ème Edition –
Luc Van Lancker – Eni Edition
102