Introduction à HTML5 et CSS3
Introduction à HTML5 et CSS3
4 Laabème SI -
sti
HTML5
C’est quoi HTML5
HTML 5 (HyperText Markup Language) est un langage de balisage (dit aussi langage de
marquage) qui permet de structurer le contenu des pages web dans différents éléments.
1 C’est un langage interprété par les navigateurs (Internet Explorer, Firefox, Chrome
...), ne pouvant en aucun cas effectuer des calculs, même simples comme une multiplication.
Advantages HTML5
laabidiabdelaaziz@[Link]
Structures HTML5
En‐tête du document,
Il fournit de multiples Le Doctype au
renseignements sur le début
document lui‐même.
de page
Corps du
document. La balise <HTML>
Le contenu de la indique au navigateu
qu’il s’agit d’un
page :texte, blocs,
document HTML
images
laabidiabdelaaziz@[Link]
laabidiabdelaaziz@[Link]
1
Les balises META servent à placer des métadonnées (metadata) dans une page HTML. On
placera ces informations dans l’élément head, et elles ne seront pas affichées sur la page et qui
sont destinées aux
Navigateurs web
Moteurs de recherche
Outils d’indexation
Exemples
Encodage des caractères à destination des navigateurs celle-ci doit se placer après le
La norme HTML a prévu une balise spéciale pour le titre de la page, c'est la balise< title>.
Les moteurs de recherche y ont d'ailleurs accordé une grande importance
Balise < link >
Permet de charger les fichiers de code annexes à la page HTML, notamment les fichiers de
feuilles de style (.css)
Exemples
1 Utilisé pour définir un script en JavaScript encore elle peut pointer vers un fichier de script
externe (.js) avec l’attribut src, dans ce cas le contenu de la balise doit rester vide
laabidiabdelaaziz@[Link]
2
5) Ajouter les lignes suivantes à la fin du fichier tp5 et visualiser votre travail.
<h3>Évolutions du langage</h3>
<ul><li>1989-1992 : Origine</li></ul>
</body>
<ul type="circle">
9) Effectuer les modifications présentées dans le tableau ci-dessous sur votre code
HTML.
N° Modification Résultat
1 <ol type="A">
2 <ol type="a">
3 <ol type="I">
4 <ol type="i">
10) créer une feuille de style appelé « [Link] » qui permet de faire les mises en forme
suivantes à la page web « [Link] » :
Couleur d’arrière-plan : rose
Titre : centré , souligné , de couleur bleu , taille=40px , police= verdana
Paragraphe : taille =20px ,
La liste numéroté : Gras , Italique
11) Quelle est la balise qui nous permet de faire la liaison entre la page web et le fichier css ?
Quel est son emplacement dans le code HTML ?
4
5) Copier deux images d'extension jpg dans votre dossier de travail, et renommer-les
en [Link] et [Link].
6) Ecrire la balise qui permet d’insérer les deux images de la façon suivante :
Image1 : aligné à gauche
Largeur = 200
Hauteur = 150
Info bulle de l’image : « première image »
Image2 : aligné à droite
Bordure = 4
Largeur = 100
Hauteur = 100
Info bulle de l’image : « deuxième image »
Table 1 :
Les types d’images
Image vectorielle Image bitmap Image animée
Table 2 :
Bonjour Hello
bonsoir Hi
Table 3 :
Voici deux colonnes fusionnées Hello
Bonjour bonsoir hi
Balise TD
Attribut Type de valeur Description
colspan entier Le nombre de colonnes à fusionner
rowspan entier Le nombre de lignes à fusionner
TP 3 ( HTML5 et CSS3)
-Les liens hypertextes (externes et internes) + iframe
8) En se basant sur le « rappel des mises en forme des liens », appliquer les
mises en forme suivantes aux liens de la page web« [Link] »
Mises en forme demandées Code en CSS
couleur rose
<a href=” “ target=”_parent”> le contexte de navigation parent de celui en cours. S'il n'y a pas de
parent, il se comporte comme _self.
<a href=” “ target=”_blank”> généralement un nouvel onglet, mais les utilisateurs peuvent
configurer les navigateurs pour ouvrir une nouvelle fenêtre à la place.
Q8
Mises en forme demandées Code en CSS
Lien non visité : couleur rouge a :link{ color : red ; }
LES FORMULAIRES
Une page peut comprendre un à plusieurs formulaires dans sa section <body>. Tous les contrôles du
formulaire doivent être insérés entre les balises <form>…</form> :
Balise Description Attributs facultatifs
<form> formulaire contenant des contrôles name="nomFormulaire"
method="get|post" méthode d’envoi des données
au serveur (get par défaut).
action (="URL") adresse du script auquel les
données sont envoyées (pour être traitées).
Un à plusieurs évènements JavaScript peuvent être
spécifiés
Une zone de texte permet de saisir tout type de données. La voici en version « minimale » :
contrôle de formulaire code HTML
La zone de texte : Nom : <input type="text"
name="nom" />
L’attribut name est obligatoire afin de permettre au serveur, chargé de traiter les valeurs, de récupérer
ces valeurs à partir du nom qui leur est attribué (deux contrôles d’un même formulaire ne peuvent donc
pas avoir la même valeur de l’attribut name).
Le message issu du placeholder disparaît lorsque le curseur est placé dans la zone (ce qui est d’emblée le
cas ici du fait de l’autofocus) : il apparaît lorsque la zone n’est pas sélectionnée et qu’aucun contenu n’a
été saisi. placeholder, autofocus et required sont des attributs HTML5 pas encore reconnus par tous les
navigateurs.
L’attribut default permet d’indiquer une valeur par défaut dans la zone (que l’arrivée du curseur
dans la zone ne supprime pas) : s’il n’y a pas de ressaisie, c’est cette valeur qui sera transmise
(alors que placeholder n’indique pas une valeur).
La balise <label> a une portée sémantique (repérer les libellés de formulaire), son attribut for se
réfère à l’id de la zone de texte (qui peut porter la même valeur que name) permet d’envoyer le
curseur dans la zone quand on clique sur le libellé.
9
Présentons les contrôles de formulaire :
contrôle de formulaire code HTML
La zone de champ caché : elle peut servir à <input type="hidden" name="c"
stocker (et transmettre) des valeurs qui n’ont value="caché" />
pas besoin d’être affichées à l’écran (mais
visibles dans le code source).
La zone mot de
Mot de passe : <input type="password"
passe :
name="mp" />
La zone de texte <textarea type="text" name="lib"
long : rows="3" cols="25">valeur par
défaut</textarea>
L’apparence de la zone de texte multilignes est
paramétrable soit à l’aide des attributs rows
(lignes) et cols (caractères en elle permet de
saisir tout type de données, sur plusieurs lignes
colonnes) ou en CSS (propriétés width et
height).
Les boutons radio : Sexe :
<input type="radio" name="sexe"
value="M" checked /> Homme
ils permettent d’effectuer un seul choix <input type="radio" name="sexe"
(conditionné par une valeur identique pour value="F" /> Femme
l’attribut name) parmi des propositions
L’attribut facultatif checked détermine la
valeur préselectionnée.
Les cases à cocher Jour(s) de disponibilité :
: <input type="checkbox"
name="jour[]" value="1" />
elles permettent d’effectuer un à plusieurs Mercredi
choix parmi un nombre limité de propositions ; <input type="checkbox"
les choix effectués peuvent être stockés dans un name="jour[]" value="2" /> Samedi
tableau (attribut name ci-contre) ou chaque <input type="checkbox" name="jour[]"
case peut avoir sa propre valeur de l’attribut value="3" /> Dimanche
name
Statut :
<select name="statut">
La liste déroulante : <option value="1">Etudiant</option>
<option
elle permet d’effectuer un value="2">Professeur</option>
seul choix parmi un nombre élevé de </select>
propositions L’attribut value indique la valeur renvoyée.
La zone de liste : Jour(s) de disponibilité :
<select size="3" multiple
elle permet d’afficher name="jour[]">
d’emblée plusieurs (selon <option value="l">lundi</option>
l’attribut size) propositions. L’attribut <option value="m">mardi</option>
<option value="j">jeudi</option>
10
facultatif multiple permet le choix multiple <option value="v">vendredi</option>
(l’attribut name doit alors désigner un tableau) </select>
L’attribut facultatif selected de la balise
<option> permettrait de préselectionner un
élément de la liste.
Le fichier joint : PJ : <input type="file" name="pj"
value="fichier" />
il permet de rechercher un fichier à envoyer en
pièce jointe
Le bouton Annuler : <input type="reset"
il réinitialise tous les contrôles du formulaire à value="Annuler" />
vide ou à leur valeur par défaut
Le bouton Envoyer : <input type="submit"
value="Envoyer" />
il envoie les données du formulaire au serveur
pour un traitement par le script spécifié dans
l’attribut action de la balise <form>
Remarque :
Output <output onload="value = 2 + 2"></output>
<progress id="prog" max=100 value=75> 75%</progress>
Progress
Exercice2 :
13
Exemple : Exemple:
</p>
</form>
Exemple d’appel :
<body onload="myFunction()">
Exemple d’appel :
<form action="…" onsubmit=" return myFunction( )">
oninput Se déclenche dès que la valeur d'un élément a changé.
Exemples d’appels :
<input id="…" oninput="myFunction()">
<textarea id="…" oninput="myFunction()">
Exemple d’appel :
<input id="…" onblur="myFunction()">
onfocus Se déclenche au moment où l'élément obtient le focus.
Exemple d’appel :
<input id="…" onfocus="myFunction()">
1.3 Les événements de la souris
Attribut Description
onclick Se déclenche lors d’un clic sur l’élément.
Exemples d’appels :
<p onclick="myFunction()">
<input onclick=" myFunction()">
<div onclick=" myFunction()">
<h1 onclick="myFunction()">
Exemples d’appels :
<p onmouseover =" myFunction()">
<input onmouseover =" myFunction()">
<div onmouseover =" myFunction()">
<h1 onmouseover =" myFunction()">
17
TP 5( HTML5 et CSS3)
-Les balises sémantiques + Rappel (image, table, formulaire)
HEADER
SECTION
NAV aside
ARTICLE
ARTICLE
footer
5) choisir un sujet de votre site web et remplir les différentes parties de cette page web
6) Améliorer cette page, en ajoutant un code CSS pour bien organiser ces parties, et faire
des mises en forme.
7) créer une page qui contient des images, une page qui contient une table et une page qui
contient un formulaire
8) pour pouvoir naviguer dans votre site web, ajouter des liens hypertexte internes et
externes
18
Q4) <body>
<header> <h1>bienvenue a mon site web</h1> </header>
<nav>
<p> <a href="[Link]" >pqge 1</a></p>
<p> <a href="[Link]" >pqge 2</a></p>
</nav>
<section>
<article>
......................
</article>
<article>
.....................
</article>
</section>
<aside> publicite </aside>
<footer> ......................... </footer>
</body>
19
Q6)
Autre méthode qQ6
header{
border: 1px dashed;
top: 0%;background-color: pink; width:
100%; height:20%; }
nav{
border:1px dashed;
float: left; width: 20%; position:
absolute; height: 65%;
top: 15%; }
section{
border: 1px dashed; margin-left: 21%;
width: 60%;
height: 65%;
position: absolute;
top: 15%; }
aside{
border: 1px dashed; margin-left: 82%;
width: 17%;
height: 65%;
position: absolute;
top: 15%; }
footer{
border: 1px dashed;
position: absolute;
bottom: 0%;
background-color: pink;
height: 20%; width: 100%;
}
<iframe>
Définition :
Un iframe HTML est utilisé pour afficher une page Web dans une page Web.
Un cadre en ligne est utilisé pour incorporer un autre document dans le document
HTML actuel.
Syntaxe :
L' attribut target du lien doit faire référence à l' attribut name de l'iframe :
14
Les couleurs en CSS
rgb (0..255,0..255,0..255)
rgba (0..255,0..255,0..255,opacité:0..1)
24
CSS3 (mise en forme d’une table)
code résultat
bordures d’une table
table, th, td {
border: 1px solid black;
}
table {
width: 100%;
}
table {
border-collapse:
collapse;
}
table {
border: 1px solid black;
}
th, td {
border-bottom: 1px solid
#ddd;
}
Styles d’une table
table {
width: 100%;
}
th {
height: 70px; }
table {
width: 50%;
box-shadow :5px 5px 2px
grey;
Alignements d’une table
td {
text-align: center;
}
td {
height: 50px;
vertical-align: bottom;
}
th, td {
padding: 15px;
text-align: left; }
les styles de bordures : dotted (pointillé), dashed (tirets), solid (solide), double (double)
25
La propriété CSS table-layout permet de spécifier l'algorithme utilisé pour disposer les
cellules, colonnes et lignes d'un tableau.
fixed : la largeur du
tableau et des colonnes est
fixé par la largeur des
éléments table et col ou par
la largeur de la première
ligne de cellules.
auto : la largeur du
tableau et de ces cellules
dépendent du contenu.
26
4 ème SI
a:link {
color: yellow; }
/* visited link */
a:visited {
color: green;
a:hover {
color: hotpink;
text-decoration: underline;
/* selected link */
a:active {
color: blue;
text-decoration: none;
a:link, a:visited {
background-color: #f44336;
color: white;
Sélecteur Sert a …
* Sélectionner tous les éléments (sélecteur universel)
A, B Sélectionner deux éléments A et B
AB Sélectionner un élément B contenu dans un élément A
A+B Sélectionner le premier élément B suivant un élément A
A[nom de l’attribut] Sélectionner tous les éléments A possédant un attribut
particulier
A[nom de l’attribut* = Sélectionner tous les éléments A possédant un attribut
« valeur »] particulier avec
une valeur
A[nom de l’attribut = Sélectionner tous les éléments A possédant un attribut
« valeur »] particulier avec
une valeur précise
Animations
div {
animation-name: taille;
height: 100px;
width: 200px;
background-color: blue;
animation-duration: 4s;
}
On utilise :
animation-name : pour désigner l’animation utilisée. (obligatoire)
animation-duration : pour définir la durée de l’animation (par défaut elle est de 0 seconde).
(obligatoire)
2. Plusieurs étapes :
L’intérêt des animations est de pouvoir gérer des étapes intermédiaires. Voici une nouvelle version de
l’animation :
@keyframes taille {
0% {width: 0px;}
50% {width: 300px;}
100% {width: 200px;}
}
On a 3 étapes :
le départ (0%) avec une largeur de 0px
la moitié (50%) avec une largeur de 300px
4 ème SI
3. Plusieurs propriétés :
On peut aussi changer plusieurs propriétés :
@keyframes taille {
0% {width: 0px; background-color: red;}
25% {width: 50px; background-color: yellow;}
50% {width: 100px; background-color: green;}
75% {width: 150px; background-color: pink;}
/* 100% {width: 200px; background-color: blue;} devient facultatif car
l'état 100% est déjà l'état du div "final".*/
}
4. Démarrage différé :
Dans les exemples ci-dessus, l’animation commence dès le chargement, ce qui n’est pas toujours souhaitable.
On dispose de la propriété animation-delay pour différer le départ de la durée voulue.
En poursuivant notre exemple ça pourrait donner ce code :
div {
animation-name: taille;
height: 100px;
width: 200px;
background-color: blue;
animation-duration: 4s;
animation-delay: 2s;
}
5. Nombre d’exécutions :
Par défaut, une animation est exécutée une seule fois, si on en veut plus, il faut utiliser la propriété animation-
iteration-count. Toujours avec notre exemple :
div {
animation-name: taille;
height: 100px;
width: 200px;
background-color: blue;
animation-duration: 4s;
animation-iteration-count: 2;
}
Rque :
Si on veut un nombre d’exécutions infini, au lieu de mettre une valeur on utilisera infinite.
6. Sens de l’animation :
Par défaut une animation va dans le sens normal mais on peut aussi l’obliger à aller dans l’autre sens en utilisant
la propriété animation-direction. On dispose de deux valeurs :
reverse : on va dans le sens inverse.
alternate : on alterne d’un sens à l’autre (dans ce cas évidemment il faut prévoir au moins deux
exécutions).
4 ème SI
div {
height: 100px;
width: 200px;
background-color: blue;
animation-name: taille;
animation-duration: 4s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
7. Progression de l’animation :
On peut modifier l’animation avec la propriété animation-timing-function et ces valeurs :
ease : début rapide, puis ça accélère, puis ça ralentit à la fin (c’est l’effet par défaut).
linear : même vitesse du début à la fin.
ease-in : début lent.
ease-out : fin lente.
ease-in-out : début et fin lents.
@keyframes taille {
0% {width: 50px ;}
100% {width: 200px ;}
}
div {
height: 100px;
background-color: blue;
animation-name: taille;
animation-duration: 4s;
animation-fill-mode: forwards;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-timing-function: linear;
}
div:hover {
animation-play-state: paused;
}
L'exemple suivant montre un élément <div> rouge de 100px * 100px. L'élément <div> a également spécifié un
effet de transition pour la propriété width, d'une durée de 2 secondes :
#d1 {
width: 100px;
height: 100px;
background: red;
transition: width 2s;
}
L'effet de transition commencera lorsque la propriété CSS spécifiée (largeur) changera de valeur.
Maintenant, spécifions une nouvelle valeur pour la propriété width lorsqu'un utilisateur survole l'élément <div>
:
Exemple :
#d1:hover {
width: 300px;
}
L'exemple suivant ajoute un effet de transition pour les propriétés width et height, avec une durée de 2
secondes pour la largeur et de 4 secondes pour la hauteur :
#d1 {
transition: width 2s, height 4s;
}
Dans ce cas, l'animation fera une demi seconde. Comme pour la propriété transition-property il faut prévoir
le préfixe vendeur à transition-duration :
#d1{ #d1:hover {
border:solid 1px blue; width: 300px;
background-color:orange; height: 200px;}
}
#d1:hover{
border:dotted 1px green;
background-color:yellow;
4 ème SI
transition-property:background;
transition-duration:0.5s;
}
Dans l’exemple suivant, on opère une transition CSS sur la taille de police du titre de quatre secondes après
deux secondes écoulées lorsque l'utilisateur passe la souris sur l'élément :
h1{
font-size: 14px;
transition-property: font-size;
transition-duration: 4s;
transition-delay: 2s;
}
h1:hover{
font-size: 36px; }
On utilise parfois CSS pour mettre en avant les éléments d'un menu lorsque l'utilisateur les survole avec sa
souris. On peut facilement utiliser les transitions CSS pour améliorer l'effet obtenu. On construit l'apparence
du menu :
a{
color: #fff;
background-color: #333;
transition: all 1s;
}
a:hover,a:focus {
color: #333;
background-color: #fff;
border-radius: 10px; }
Appliquer une transition sur plusieurs propriétés CSS :
Cette boîte utilisera des transitions pour width, height, background-color, avec une rotation de 180 degré :
#d3{
border-style: solid;
border-width: 1px;
display: block;
width: 150px;
height: 150px;
background-color: #0000FF;
transition: width 2s, height 2s, background-color 2s, transform 2s;
}
#d3:hover {
background-color: #FFCCCC;
width: 200px;
height: 200px;
transform: rotate(180deg); }
Un autre exemple :
#d4{
background-color: red;
width:150px;
height: 150px;
transition-property: opacity, left, top, height;;
transition-duration: 3s, 5s, 3s, 5s;
}
4 ème SI
#d4:hover{
background-color: red;
height: 200px;
opacity: 0.5;
}
La propriété transform va nous permettre de définir un ou plusieurs effets de transformation à appliquer à un
élément : inclinaison, rotation, déformation, etc.
Nous appliquons un premier effet de transformation qui va être une translation, c’est-à-dire un déplacement
selon une direction. Ici, on va donc déplacer l’élément de 100px à partir de leur point d’origine vers la droite.
#d2{
background-color: pink;
width:150px;
height: 150px;
transform-origin: 0 0;
transform:translate(100px);
text-transform: uppercase;
}
Le point d’origine de la transformation est le centre . Comme la transformation n’est ici qu’un déplacement
horizontal, modifier le point d’origine ne change pas le résultat de la transformation.
#d5{
background-color: green;
width:150px;
height: 150px;
transform-origin: 50% 50%;
transform:rotate(45deg);
}
#d5:hover{
border:dotted 1px green;
background-color:orange;
transition-property:background;
transition-duration:0.5s; }
Exemple de transformation 2D :
La fonction scale() permet de modifier la taille ou plus exactement l’échelle de l’élément. Nous allons pouvoir lui
passer deux nombres qui vont correspondre au pourcentage d’agrandissement en largeur et en hauteur de
l’élément.
Par exemple, en écrivant transform : scale(2, 0.5), l’élément va doubler en largeur et être diminué de moitié en
hauteur.
Déformer un élément avec skewX() et skewY()
A la place, il faudra plutôt utiliser les fonctions skewX() et skewY() qui vont nous permettre de déformer un
élément selon son axe horizontal ou vertical.
#d1{
transform: skewX(30deg); }
#d2{
transform: skewY(30deg); }
#d3{
transform: skewX(30deg) skewY(30deg);}