Introduction à HTML et CSS pour débutants
Introduction à HTML et CSS pour débutants
2
Une page Web c’est …
11
Un site Web c’est ...
12
Mais pas que ...
5
Mettre son site en ligne
6
Le principe de « serveur web »
Pour mettre en ligne on fait passer ses fichiers de la machine du créateur à un serveur web
7
Transférer un fichier sur le serveur
Souvent à l’aide d’un client FTP. Votre hébergeur vous fournira les logins et mot de passe pour y
8
accéder.
9
Le client FTP
19
Le HTML - généralités
20
HTML : définition
– HTML5
12
Le W3C
13
Le WHATWG
14
Générer du HTML avec un éditeur
15
[Link]
• [Link]
• Éditeur spécialisé
• Auto-complétion, retour à la ligne, coloration syntaxique, plugins etc.
• Gratuit pour Mac et Windows – open source
16
Atom
• [Link]
• Éditeur spécialisé
• Auto-complétion, retour à la ligne, coloration syntaxique, plugins etc.
• Gratuit pour Mac et Windows – open source
17
Les éditeurs de texte plus avancés et spécialisés
• [Link]
• Éditeur spécialisé
• Auto-complétion, retour à la ligne,
colorisation syntaxique
• Plugins, snippets, mode « sans
distraction »
• 30 jours essai Windows/Mac/ Linux
puis payant
18
D’autres éditeurs
19
Les éditeurs « WYSIWYG »
20
Générer du HTML depuis un CMS
21
Générer du HTML depuis un langage côté serveur
22
23
La syntaxe HTML : balises,
éléments et attributs
33
Le principe de balise
<
> *
a l i o
34
Le principe de balise
• On peut imbriquer les balises (on y reviendra) les unes dans les
autres
26
Le principe de balise
27
Le principe de balise
<i
37
Attributs et valeurs
29
Attributs et valeurs
30
Exemples d’attributs
31
Exemples d’attributs
! class=" " : donner une classe à l’élément que l’on pourra utiliser en
CSS.
Les classes peuvent être dupliquées sur la page
– <p class="maclasse"> contenu </p>
32
Doctype, html, body : structure
d'un document valide
42
Structure d’un document HTML simplifié
34
La notion de doctype
<!doctype html>
35
Le doctype HTML5
36
La balise <html>
– Synthèse vocale
<html lang="fr">
38
La balise <head>
39
La balise <title>
40
La balise <head> : les balises meta
41
La balise <head> : les balises meta
42
La balise <body>
<body>
Contenu de la page
</body>
43
En résumé
<!doctype html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title> Titre de ma page </title>
</head>
<body>
Contenu de la page
</body>
</html>
53
C’est valide !
54
Les commentaires dans le HTML
Il est possible d’écrire du texte qui ne sera visible que dans le code source et non sur le site : un
commentaire
46
Les éléments de structuration
du contenu
47
La balise « division » <div>
48
La balise « division » <div>
49
Grille en div
50
La balise paragraphe <p>
51
La balise paragraphe <p>
52
Espaces insécables
53
Espaces insécables
54
D'autres entités HTML
[Link]
55
Les titres h1 – h6
56
Les titres h1 – h6
57
Blockquote, une citation
58
Blockquote, une citation
59
Exemple de blockquote stylée
[Link]
60
Les éléments de « mise en
forme » de texte
61
Éléments en ligne « inline »
62
L’ élément <strong>
63
L’ élément <strong>
64
L’ élément <em>
65
L’ élément <em>
66
L’ élément <span>
67
L’ élément <span>
68
D’autres éléments
69
Les liens dans les documents
HTML
70
Fonction d'un lien
71
La balise <a>
72
La balise <a> pour les liens
73
Lien externe vers un autre site
74
Liens internes et hiérarchisation du site
75
Liens internes et hiérarchisation du site
76
Exercice !
8
6
Lien vers un fichier du même répertoire
78
Mon premier site
79
Exercice !
80
Exercice !
81
Exercice !
82
Liens vers un autre répertoire
83
Descendre dans un sous répertoire
84
Remonter d’un répertoire
85
Mon premier site
86
Exercice !
87
Exercice !
88
Ouvrir un lien dans un nouvel onglet
89
Des liens « internes » ou ancres internes
[Link]
Hypertext_Markup_Language#Description_de_HTML
90
[Link]
100
Un lien vers une adresse mail
101
Les éléments de liste
102
Les listes non ordonnées <ul>
94
Les listes non ordonnées <ul>
95
Les listes ordonnées <ol>
96
Les listes ordonnées <ol>
97
Contenu d’une liste
98
Exemple d’imbrication
99
Exemple d’imbrication
100
Les listes en pratique – les onglets
[Link]
101
Les listes en pratique – les navigations
[Link]
102
Les listes en pratique – • http://
les navigations [Link]/
112
Ajouter des images avec la
balise <img>
113
Le format JPEG- Joint Photographic Experts Group
=> Pour la compression avec pertes très efficace pour des images
photographiques
105
Le format GIF - Graphics Interchange Format
[Link]
106
Quelques jolis GIFs
[Link]
107
Le format PNG - Portable Network Graphics
108
En résumé
109
Compresser une image JPEG outils
• En ligne :
– [Link] outil en ligne avec traitement par lots
• En Local :
– [Link] sur mac PNG et JPG
110
La balise <img>
• Balise auto-fermante
111
La balise <img> et source de l'image
– url de stockage
112
La balise <img> et attribut « alt »
113
La balise <img> et attribut « alt »
• L'attribut est obligatoire, mais il peut être vide pour les images
décoratives
114
Attributs width et height
• Les attributs width et height peuvent être ajoutés pour donner une
taille à l’image
• Sans width/height le navigateur « devine » la taille ce qui crée des
sauts de page quand l’image se charge
• En général, il vaut mieux la redimensionner avant dans un logiciel,
plutôt que charger une grande image et la rétrécir (performance)
115
Exemple
116
L'attribut title
118
Bonus : intégrer une vidéo
119
Bonus : intégrer du son
120
Bonus : intégrer du son
121
D’autres types d’iframe
122
Les tableaux HTML
123
Les tableaux, introduction
124
Créer un tableau : <table>
125
Exemple de tableau simple
126
Exemple de tableau simple
127
Un avant-goût de CSS
• Pour la suite et y voir plus clair, nous allons ajouter une bordure à
notre tableau avec la propriété CSS
128
Ajouter une entête avec ! <th> peut remplacer <td>
<th> pour créer une cellule
d’entête au tableau
141
Les formulaires
142
Les formulaires sont partout autour de nous
134
La balise <form>
Par défaut si elle est vide, c’est comme n’importe quel élément, rien n’est affiché
145
La zone de texte monoligne <input>
137
Le label
138
Associer le label au champ
139
L'attribut « value »
140
L'attribut « value »
141
En résumé pour n'importe quel champ il faut toujours au
moins
142
Attributs supplémentaires
143
Les placeholder (ne sont pas des labels ! )
! placeholder=" " : attribut HTML5, donne une indication de ce que devrait contenir le champ.
Attention, ne remplace PAS le label
! Pas supportés partout (IE10+) => ne PAS utiliser sans label visuel pour l'utilisateur (ou un polyfill)
153
Zone de texte multiligne <textarea>
145
Attributs utiles pour textarea
• PAS de value= " ", le texte par défaut se met entre les deux balises
ouvrante et fermante
146
Les cases à cocher <input type="checkbox">
147
Les cases à cocher <input type="checkbox">
148
Les cases à cocher <input type="checkbox">
150
Les boutons radio <input type="radio">
151
Groupe de boutons radio
! Pour que le navigateur comprenne que des éléments forment un groupe, il faut leur donner le
même attribut name
! On peut pré-cocher un bouton radio avec checked="checked"
161
Les listes déroulantes <select>
153
Les listes déroulantes <select>
154
Bouton d’envoi input type="submit"
155
Petit résumé des
champs
select + option
textarea
165
Bouton de reset, input type="reset"
157
Bouton <button type="button">
158
Bouton <button type="button">
[Link]
159
Désactiver un champ : disabled="disabled"
160
Désactiver un champ : disabled
161
Les champs de mot de passe <input type="password">
162
Uploader un fichier : type = file
163
Cacher un champ type="hidden"
164
Liste non exhaustive de quelques balises
! body ! form
! div ! table
! p ! iframe
! h1- h6 etc.
!
! ul
! ol
! li
!
blockquote
165
CSS : Introduction et notions
de base
175
CSS : Cascading Style Sheets
167
CSS : Cascading Style Sheets
168
En bref
169
Un peu d’histoire
170
Différents rendus entre les navigateurs
180
Différents degrés de compréhension
172
Tester sur différents navigateurs
[Link]
173
Et pour Internet Explorer ?
[Link]
183
Console de debug : clic droit + inspecter
184
Et pour Internet Explorer ?
176
Web Developer
177
Appliquer un style, oui
mais où ?
178
Le CSS “en ligne” dans la balise HTML
! Attribut style = …;
! « Je veux des titres roses » :
<h1 style="color:pink;" >
179
Problèmes de maintenabilité
180
Le CSS « interne» dans l’entête du HTML
<style type="text/css">
h2{
color: #fff;
}
</style>
181
Le CSS « interne» dans l’entête du HTML
! Avantage :
– Possibilité d’appliquer une règle sur tous les mêmes éléments d’un
même document
! Inconvénient :
– Ne s’applique qu’à ce document, et non au site en entier
– Il faut donc modifier le CSS sur chaque page (ex : si on a 10 pages,
modifier les styles sur les 10 fichiers)
182
La/les feuille(s) de style externe(s)
183
La feuille de style externe
[Link]
[Link]
184
La feuille de style externe
• Avantages :
– Séparation totale de la structure
et de la présentation : possibilité
d’avoir des présentations
alternatives
– Possibilité d’appliquer la même
feuille de style sur plusieurs
pages (donc le site en entier)
sans devoir la dupliquer
– Cohérence de la présentation sur
tout le site et les pages futures.
185
Récapitulatif
! [Link] : pour le
contenu
186
La syntaxe CSS
187
La syntaxe de base
– La propriété est l’effet que l’on va vouloir donner (ex couleur de texte,
positionnement, couleur de fond, etc.)
selecteur {
propriete: valeur
propriete: valeur
...
}
197
La déclaration CSS
s e l e c t e u r
198
Les commentaires CSS
199
Généalogie et différents
types de sélecteurs
200
Le sélecteur usuel d'élément HTML
p{
color : blue;
}
201
Hiérarchie et généalogie
193
Hiérarchie et généalogie
194
Notion d’enfant et de descendance
195
Notion de parent et d'ancêtre
196
Sélecteur de hiérarchie
! Pour sélectionner le a
descendant de p, nous allons
pouvoir écrire :
pa{…}
(notez l’espace entre le p et le
a)
197
Sélecteur de groupe
198
Les sélecteurs de classe
! class=" " est un attribut qui peut se mettre sur n’importe quelle
balise
199
Les sélecteurs de classe
200
Classes multiples
201
Classes multiples
202
Classes multiples
! Une même classe peut être utilisée sur plusieurs balises dans le
même document
203
Classes multiples
204
Cibler une classe indépendamment de la balise
.nomdeclasse { }
205
Cibler une classe indépendamment de la balise
Une même classe peut être utilisée sur plusieurs balises HTML
206
Cibler une balise HTML avec une classe
[Link] { }
207
Cibler une balise HTML avec une classe
! Et [Link]-default{ } va cibler
[Link]
208
L’id (identifiant)
! Il a le même rôle qu’une classe, mais doit être unique sur la page
(donc on va moins l’utiliser)
! Un seul attribut id par balise est possible
! On le note <element id="monid">
! On le cible en CSS avec #monid { }
209
Un joyeux mélange !
210
Espace ou pas ?
211
Espace ou pas ?
212
Convention de nommage
213
En résumé
214
Qui est ciblé ?
div {
...
}
.first {
...
}
[Link] {
...
}
215
Qui est ciblé ?
.sugar {
...
}
.sugar p {
...
}
[Link] {
...
}
216
Qui est ciblé ?
h1 #hautpage {
...
}
h1#hautpage {
...
}
217
Qui est ciblé ?
.first a {
...
}
.first .sugar {
...
}
.important, #toffee {
...
}
218
[Link]
228
Les pseudos-classes sur les liens
229
Démonstration de :hover sur du bouton
[Link]
230
Les autres pseudo-classes
! :hover peut être appliqué sur d’autres éléments que des liens (à
partir de IE6).
! On peut écrire p:hover pour créer un effet au survol d’un
paragraphe par exemple
222
Subtle Hover effects
223
:focus sur les liens et inputs
224
Couleurs et unités CSS
225
La synthèse additive des couleurs
226
Les couleurs en CSS
E
Initiation HTML CSS - Stéphanie Walter - 2016 / 2 017
237
x
[Link]
238
Les couleurs en CSS
– background
– border
– …
230
Récupérer une couleur
• Colozilla ou Rainbow
231
Le Pixel - px
• Unité « fixe »
• Dépendance à la résolution du périphérique
• Valeur « compilée » finale en CSS
232
Le cadratin - em
233
Le cadratin - em
234
Conversion d'em
[Link]
244
Le pourcentage : %
245
En web, quelle unité utiliser ?
P
o
246 Initiation HTML CSS - Stéphanie Walter - 20l16 / 2017
Propriétés de typographie,
polices et puces
247
Font-family
body {
font-family: Arial, Helvetica, sans-
serif;
240
Polices utilisables
241
Police utilisables
251
Polices utilisables
252
Polices utilisables
• [Link]
• Autre outil : https://
[Link]/font-face
253
Font-size
body {
font-size: 18px;
}
254
Font-size
255
Mettre un
paragraphe en gras
p{
font-weight: bold;
}
256
Font weight
257
Mettre le paragraphe
en italique
p{
font-style: italic;
}
258
Font-style
259
Augmenter
l’interlignage
body {
line-height: 1.5;
}
260
Line-height
261
Color
h1 {
color: #008499;
}
262
Color
254
Text-align
255
Text-align
p{ p{
} }
256
Text-align
p{ p{
} }
257
Astuce : centrer une image
258
Text-transform
! uppercase
! lowercase
259
Text-transform
h2 { h2 {
} }
260
Text-transform
h2 { h2 {
} }
261
Font-variant
! normal
! small-caps
262
Font-variant
h2 { h2 {
} }
263
Text-decoration
! Valeurs possibles :
– none: permet d'empêcher l'héritage de la propriété et plus
particulièrement de supprimer le soulignement par défaut des liens
– overline : surlignement
– underline : soulignement
264
Enlever le soulignement des liens et le remettre au survol
a{ a:hover {
} }
/* enlever le soulignement des liens par défaut */ /* remettre le soulignement pour les liens survolés */
265
Text-indent
266
Indentation de 10px
p{
text-indent: 10 px;
}
276
Listes à puces
• Valeurs possibles
– none (pas de puce), disc, circle, square
268
Listes ordonnées
• Valeurs possibles
– decimal (1.), decimal-leading-zero (01.), lower-roman (vii), upper-roman (VII),
etc.
269
Retirer les puces
ul {
list-style-type: none;
}
279
Utiliser une image comme puce
ul {
list-style-image: url("img/[Link]");
}
271
Utiliser une image comme puce
272
Bordures et arrières plans
273
Les bordures
274
Les bordures
h2 {
border: 2px solid #009860 ;
}
275
Les bordures
border-left: …;
border-right: …;
border-bottom: …;
276
Les bordures
h2 {
border-top: 1px solid gray;
}
277
Style de bordure
! dashed : tirets;
! groove : en relief;
278
Des bords arrondis : CSS3 !
279
Des bords arrondis : CSS3 !
div { div {
280
Background-color
! background-color : valeur permet de donner une couleur de
fond.
! Valeurs : n’importe quelle couleur CSS
! Sur un élément bloc (prend toute la largeur) ou inline (prend la
largeur du contenu)
281
Background-color
body {
background-color: #E6E6E6;
}
282
Background-image
283
Background-image
body {
background-image: url("img/[Link]");
}
284
Background-repeat
! background-repeat permet de définir la façon dont l’image va se
répéter.
285
Background-repeat
! Valeurs possibles :
– no-repeat : l’image ne sera pas répétée
– repeat-x : l’image sera répétée horizontalement
295
Background-repeat en pratique
! Quelques exemples
– [Link]
– [Link]
296
Background-repeat en pratique
288
Background-position
289
Une étoile alignée en
bas à droite
.backgroundposition {
background-color: #A4D0F2;
background-image: url('img/
[Link]');
background-repeat: no-repeat;
background-position: right bottom;
299
Background-attachment
291
Background-attachment
292
Tout dans une ligne !
Il est possible de combiner toutes ces propriétés dans une seule et même ligne :
background : propriete1 propriete2 propriete3;
h2 {
background:#7AAAAF url("img/[Link]") no-repeat center left;
}
293
Dimensions, margin et
padding
294
Petit rappel inline et block
295
Largeur et hauteur d'un élément : width et height
296
Max et min
! Valeurs : numériques
! Permet par exemple de gérer un débordement d’image :
img { max-width: 100%; } : les images sont limitées à la taille de leur
parent
297
Marges
! Il existe deux types de marges : intérieure appelée padding, et extérieure appelée margin
(s'il y a une bordure elle est elle aussi ajoutée à la largeur effective des éléments)
298
Marge extérieure « margin »
299
Marge extérieure « margin »
300
Ajouter une marge
sous un paragraphe
p{
margin-bottom: 30px;
}
301
Ajouter une marge
sous un titre
h2 {
margin: 50px 0;
}
302
Centrer horizontalement à l’aide de margin
303
Margin et éléments inline
304
Padding : la marge « intérieure »
305
Padding : la marge « intérieure »
306
Ajouter du padding au body
body {
padding: 10px 15px;
}
31
6
Ajouter du padding à
un titre pour décoller la
bordure
h2 {
padding-bottom: 10px
15px;
317
Padding sur élément en inline
309
Retirer les marges et padding par défaut du navigateur
310
Retirer les marges et padding par défaut du navigateur
311
Padding et calcul de dimension d’élément
312
Padding et calcul de dimension d’élément
313
Box-sizing:border-box - changer le modèle de boîte
.element {
box-sizing: border-box;
}
314
Box-sizing:border-box - changer le modèle de boîte
body { Valeur affichée de body :
width: 800px; 800px
padding: 10px 15px;
box-sizing: border-box;
315
Overflow : pour éviter que ça dépasse
316
Overflow: hidden - cacher ce qui dépasse
317
Overflow: auto - afficher une barre de défilement
318
Positionnements CSS
319
Les « flottants » et le flux
320
Float:left
321
Float right;
322
Problème des flottants
323
Clear : bloquer le dépassement des flottants
! Valeurs possibles :
– clear: left permet d’empêcher le contournement des blocs flottants à gauche
– clear: right permet d’empêcher le contournement des blocs flottants à droite
– clear : both permet d’empêcher le contournement des blocs flottants à
gauche et à droite
324
Clear : bloquer le dépassement des flottants
325
Problème des flottants
326
BFC et contenir les flottants dans un bloc
327
BFC et contenir les flottants dans un bloc
328
Overflow : hidden
! Ajouter overflow:hidden au
parent des flottants permet
de créer un « contexte de
formatage de bloc » et
résoudre notre problème
329
Overflow : hidden
.parent {
overflow : hidden;
}
339
Les flottants appliqués à la mise en page
• Il est possible d'utiliser des flottants pour créer une mise en page en
colonnes. C’est notamment utilisé dans d’anciennes versions de
bootstrap et ressemble à ça. On privilégie cependant flexbox
aujourd’hui pour une mise en page de site web.
340
Positionnements CSS
332
La propriété « display » pour mise en page
333
Display:block
! Il est possible de transformer un élément inline en élément de bloc
avec display: block
! Il a alors toutes les propriétés d’un élément de bloc : par défaut, il
prend toute la largeur de son parent, on peut en changer la
dimension ET est suivi d’un retour à la ligne. On peut alors lui
appliquer des marges.
334
Display:block
335
Display:block
Exemple : transformer les liens de la
navigation en éléments de bloc
.header a,
.header li {
display: block;
}
.header a {
background: #98C9E2;
margin-bottom: 5px;
width: 150px;
345
Display:inline
337
Display:inline
338
Display:inline-block
339
Display:inline-block et
navigation horizontale display: inline-block sur une liste de liens
permet par exemple de créer une
navigation horizontale
.header li {
display: inline-block;
}
.header li a{
display: block;
padding: 5px;
349
Display:inline-block et bugs connus
• La propriété crée une colonne blanche entre les éléments. Plus sur
ce problème ici
341
Display:none
342
Positionnement CSS
343
Positionnement CSS
344
Position:static;
345
Position:relative;
346
Position:relative;
position:relative;
top:-15px;
}
347
Position:relative;
.picto {
position: relative;
top:5px;
357
Position:relative;
349
Position: fixed
350
Position :fixed
351
Position :fixed
.nav {
Sortir la navigation du flux
position: fixed;
}
352
Position :fixed
.nav {
La positionner en haut à 0px des 3 coins
position: fixed;
pour qu’elle s’affiche toujours
top: 0;
left: 0;
right: 0;
}
353
Position: fixed dans la vraie vie
– [Link]
354
Position: fixed dans la vraie vie, un peu trop d’ailleurs
[Link] ?sf=ozpplo
364
Position: absolute;
! Par défaut, si aucun ancêtre n’est positionné (et qu’on a modifié top, left,
right ou bottom) il se positionne par rapport à l'élément racine <html>.
356
Position: absolute;
357
Centrer une légende d’image
358
Position: absolute;
359
Position: absolute;
.caption {
Préparer le positionnement de l’image
position: absolute;
bottom: 150px;
left: 0;
right: 0;
}
360
Position: absolute;
361
CSS et mise en page
• Pendant longtemps nous avons utilisé des fottants pour faire des
mises en page. Vous retrouvez encore cette technique sur
beaucoup de sites développés jusqu’il y a encore quelques années.
• Aujourd’hui, la mise en page de sites web moderne se fait avec
deux techniques : flexbox (pour des mises en page fluides) et grid-
layout (plus récent et moins bien supporté mais qui permet de créer
facilement des sites sur des principes de grilles.
362
CSS et mise en page avancée : Flexbox
– [Link]
Disposition_des_bo%C3%AEtes_flexibles_CSS/
Utilisation_des_flexbox_en_CSS
– [Link]
[Link]
363
CSS et mise en page avancée : Grid Layout
– [Link]
– [Link]
364
Adapter son site au mobile : le responsive webdesign
• [Link]
365
Rapide aperçu de la syntaxe
display:block;
366