Académique Documents
Professionnel Documents
Culture Documents
du développement
web
HTML et CSS et JavaScript
3
Une page Web c’est …
12
Mais pas que ...
7
Le principe de « serveur web »
Pour mettre en ligne on fait passer ses fichiers de la machine du créateur à un serveur web
8
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
9
accéder.
1
8
Le HTML - généralités
20
HTML : définition
– HTML5
• http://brackets.io/
• Éditeur spécialisé
• Auto-complétion, retour à la ligne, coloration syntaxique, plugins etc.
• Gratuit pour Mac et Windows – open source
2
5
Atom
• https://atom.io/
• Éditeur spécialisé
• Auto-complétion, retour à la ligne, coloration syntaxique, plugins etc.
• Gratuit pour Mac et Windows – open source
2
6
Les éditeurs de texte plus avancés et spécialisés
• http://www.sublimetext.com/
• Éditeur spécialisé
• Auto-complétion, retour à la ligne,
colorisation syntaxique
• Plugins, snippets, mode « sans
distraction »
• 30 jours essai Windows/Mac/ Linux
puis payant
33
Le principe de balise
<
> *
o
n
a
l
o t a
e l
34
i n Initiation n
HTML CSS - Stéphanie Walter i- 2021-2022
Le principe de balise
• On peut imbriquer les balises (on y reviendra) les unes dans les
autres
<
i
g
37
s HTML CSS et JavaScript - Cours - 2021-2022
Attributs et valeurs
! 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>
42
Structure d’un document HTML simplifié
<!doctype html>
– Synthèse vocale
<html lang="fr">
<body>
Contenu de la page
</body>
<!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 !
Il est possible d’écrire du texte qui ne sera visible que dans le code source et non sur le site : un
commentaire
44
Les éléments de structuration
du contenu
45
La balise « division » <div>
copypastecharacter.com
HTML CSS et JavaScript - Cours - 2021-2022
53
Les titres h1 – h6
https://css-tricks.com/snippets/css/simple-and-nice-blockquote-styling/
59
Éléments en ligne « inline »
61
L’ élément <strong>
68
Fonction d'un lien
8
6
Lien vers un fichier du même répertoire
78
Exercice !
! Ouvrez page1.html, ajoutez lui un titre h1 et ajoutez un lien de
retour à l’index
79
Exercice !
! Ajoutez un répertoire « page_interne »
! Ajoutez-y une page « page2.html »
80
Liens vers un autre répertoire
85
Exercice !
86
Ouvrir un lien dans un nouvel onglet
https://fr.wikipedia.org/wiki/
Hypertext_Markup_Language#Description_de_HTML
102
Les listes non ordonnées <ul>
98
HTML CSS et JavaScript - Cours - 2021-2022
Les listes en pratique – les onglets
http://getbootstrap.com/javascript/#tabs
99
Les listes en pratique – les navigations
http://www.mobify.com/
100
Les listes en pratique – les • http://
navigations flexslider.woothemes.com/
113
La balise <img>
• Balise auto-fermante
– url de stockage
• L'attribut est obligatoire, mais il peut être vide pour les images
décoratives
• 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)
108
HTML CSS et JavaScript - Cours - 2021-2022
L'attribut title
115
Les tableaux, introduction
• Pour la suite et y voir plus clair, nous allons ajouter une bordure à
notre tableau avec la propriété CSS
121 Walter -
HTML CSS et JavaScript - Stéphanie
2016 /
Ajouter un titre au ! On utilise <caption> pour
tableau donner un titre au tableau
! La balise se place au
début du tableau
122 Walter -
HTML CSS et JavaScript - Stéphanie
2016 /
Bonus - Fusion de ! Il est possible de fusionner
cellules certaines cellules entre elles avec
l’attribut colspan="
nombredecellules" qui se place
sur la cellule (th ou td)
142
Les formulaires sont partout autour de nous
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>
! 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
153
Zone de texte multiligne <textarea>
• PAS de value= " ", le texte par défaut se met entre les deux balises
ouvrante et fermante
! 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>
select + option
textarea
165
HTML CSS et JavaScript - Cours - 2021-2022
Bouton de reset, input type="reset"
http://getbootstrap.com/javascript/#modals
154
HTML CSS et JavaScript - Cours - 2021-2022
Uploader un fichier : type = file
! body ! form
! div ! table
! p ! iframe
! h1- h6 etc.
!
! ul
! ol
! li
!
blockquote
175
CSS : Cascading Style Sheets
180
Différents degrés de compréhension
https://www.browserstack.com/
HTML CSS et JavaScript - Cours - 2021-2022 164
Console de debug : clic droit + inspecter
167
HTML CSS et JavaScript - Cours - 2021-2022
Appliquer un style, oui
mais où ?
168
Le CSS “en ligne” dans la balise HTML
! Attribut style = …;
! « Je veux des titres roses » :
<h1 style="color:pink;" >
<style type="text/css">
h2{
color: #fff;
}
</style>
! 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)
index.html
styles.css
• 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.
! index.html : pour le
contenu
177
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 HTML CSS et JavaScript - Cours - 2021-2022
La déclaration CSS
200
Le sélecteur usuel d'élément HTML
p{
color : blue;
}
! Pour sélectionner le a
descendant de p, nous allons
pouvoir écrire :
pa{…}
(notez l’espace entre le p et le
a)
! class=" " est un attribut qui peut se mettre sur n’importe quelle
balise
! Une même classe peut être utilisée sur plusieurs balises dans le
même document
.nomdeclasse { }
Une même classe peut être utilisée sur plusieurs balises HTML
element.maclasse { }
! Et button.btn.btn-default{ } va cibler
http://getbootstrap.com/css/#buttons
HTML CSS et JavaScript - Cours - 2021-2022 198
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 { }
div {
...
}
.first {
...
}
p.first {
...
}
.sugar {
...
}
.sugar p {
...
}
p.sugar {
...
}
h1 #hautpage {
...
}
h1#hautpage {
...
}
.first a {
...
}
.first .sugar {
...
}
.important, #toffee {
...
}
! :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
212
La synthèse additive des couleurs
E
237 HTML CSS et JavaScript - Stéphanie Walter - 2016 /
Les couleurs en CSS
– background
– border
– …
247
Font-family
body {
font-family: Arial, Helvetica, sans-
serif;
body {
font-size: 18px;
}
254
HTML CSS et JavaScript - Cours - 2021-2022
Font-size
p{
font-weight: bold;
}
p{
font-style: italic;
}
body {
line-height: 1.5;
}
260
HTML CSS et JavaScript - Cours - 2021-2022
Line-height
h1 {
color: #008499;
}
p{ p{
} }
p{ p{
} }
! uppercase
! lowercase
h2 { h2 {
} }
h2 { h2 {
} }
! 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
a{ a:hover {
} }
/* enlever le soulignement des liens par défaut */ /* remettre le soulignement pour les liens survolés */
p{
text-indent: 10 px;
}
• Valeurs possibles
– none (pas de puce), disc, circle, square
• Valeurs possibles
– decimal (1.), decimal-leading-zero (01.), lower-roman (vii), upper-roman (VII),
etc.
ul {
list-style-type: none;
}
ul {
list-style-image: url("img/liste.png");
}
246
Les bordures
h2 {
border: 2px solid #009860 ;
}
border-left: …;
border-right: …;
border-bottom: …;
h2 {
border-top: 1px solid gray;
}
! dashed : tirets;
! groove : en relief;
div { div {
important
body {
background-color: #E6E6E6;
}
body {
background-image: url("img/bg.png");
}
.backgroundposition {
background-color: #A4D0F2;
background-image: url('img/
etoile.png');
background-repeat: no-repeat;
background-position: right bottom;
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/etoile.png") no-repeat center left;
}
263
Petit rappel inline et block
264
Largeur et hauteur d'un élément : width et height
! 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
! 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)
p{
margin-bottom: 30px;
}
270
HTML CSS et JavaScript - Cours - 2021-2022
Ajouter une marge
sous un titre
h2 {
margin: 50px 0;
}
271
HTML CSS et JavaScript - Cours - 2021-2022
Centrer horizontalement à l’aide de margin
body {
padding: 10px 15px;
}
31
6
Ajouter du padding à un
titre pour décoller la
bordure
h2 {
padding-bottom: 10px
15px;
283
Les « flottants » et le flux
285
Float right;
286
Positionnements CSS
287
Structuration page web
297
La propriété « display » pour mise en page
.header a,
.header li {
display: block;
}
.header a {
background: #98C9E2;
margin-bottom: 5px;
width: 150px;
.header li {
display: inline-block;
}
.header li a{
display: block;
padding: 5px;
307
Positionnement CSS
position:relative;
top:-15px;
}
.picto {
position: relative;
top:5px;
.nav {
Sortir la navigation du flux
position: fixed;
}
http://www.marketingmag.stfi.re/hubs-c/smartphone-addiction-nomophobia/ ?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>.
right: 0;
}
• 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.
– https://developer.mozilla.org/fr/docs/Web/CSS/
Disposition_des_bo%C3%AEtes_flexibles_CSS/
Utilisation_des_flexbox_en_CSS
– https://www.alsacreations.com/tuto/lire/1493-css3-flexbox-layout-
module.html
– https://developer.mozilla.org/fr/docs/Web/CSS/CSS_Grid_Layout
– https://css-tricks.com/snippets/css/complete-guide-grid/
• http://mediaqueri.es/
display:bloc;
33
0
Introduction
</body>
</html>
2. Insertion par appel de module externe
• On peut insérer du code JavaScript en faisant appel à un module
externe se trouvant à n’importe quelle adresse (URI).
<script src="URL du module externe">
............
</script>
<script type="text/javascript">
document.write("<TABLE border=1>");
for (var i=0; i<5; i++) {
document.write("<TR><TD>"+Math.random()*100+"</TD></TR>");
}
document.write("</TABLE>");
</script>
</head>
<body>
</body>
</html>
• Afficher au console
• Console.log()
Entrée et sortie de données avec JavaScript
3 types de boites de messages peuvent être affichés en utilisant Javascript :
• Méthode alert()
• sert à afficher à l’utilisateur des informations simples de
type texte. Une fois que ce dernier a lu le message, il doit
cliquer sur OK pour faire disparaître la boîte
• Méthode confirm()
• permet à l’utilisateur de choisir entre les boutons OK et
Annuler.
• Méthode prompt()
• La méthode prompt() permet à l’utilisateur de taper son
propre message en réponse à la question posée
Entrée et sortie de données avec JavaScript
Alert
<html>
<head>
<title> une page simple </title>
<script type="text/javascript">
alert('bonjour');
</script>
</head>
<body>
</body>
</html>
Entrée et sortie de données avec JavaScript
Confirm
<script type="text/javascript">
reponse = confirm(“Voulez-vous continuer?”);
if (reponse == true)
{
document.write(“Vous avez cliqué sur OK”)
}
else {
document.write(“Vous avez cliqué sur Annuler”)
}
</script>
Entrée et sortie de données avec JavaScript
Prompt
<script type="text/javascript">
var nom = prompt("Entrez votre nom");
document.write("Vous vous appelez : " + nom);
</script>
La structure d’un script en JavaScript
• La syntaxe du langage Javascript s'appuie sur le modèle de
Java et C
• Règles générales
• Chaque commande doit être terminée par un point-virgule (;).
• Un nombre à virgule est séparé par un point (.) et non par une
virgule
• Le langage Javascript est sensible à la casse
• Il existe deux méthodes permettant d'intégrer des commentaires à
vos scripts.
• Placer un double slash (//) devant le texte
• Encadrer le texte par un slash suivi d'une étoile (/*) et la même
séquence inversée (*/)
Les variables (1)
• Déclaration et affectation
• Le mot-clé var permet de déclarer une ou
//Déclaration de i, de j et de k.
plusieurs variables.
var i, j, k;
• Après la déclaration de la variable, il est
possible de lui affecter une valeur par //Affectation de i.
l'intermédiaire du signe d'égalité (=). i = 1;
//Déclaration et affectation de prix.
• Si une valeur est affectée à une variable var prix = 0;
sans que cette dernière ne soit déclarée,
alors Javascript la déclare //Déclaration et affectation de
automatiquement. caractere
var caractere = ["a", "b", "c"];
Les variables (2)
• Déclaration et affectation
• La lecture d'une variable non déclarée provoque une erreur
• Une variable correctement déclarée mais dont aucune valeur n'est
affectée, est indéfinie (undefined).
• La portée
• les variables peuvent être globales ou locales.
• Une variable globale est déclarée en début de script et est
accessible à n'importe quel endroit du programme.
• Une variable locale est déclarée à l'intérieur d'une fonction et
n'est utilisable que dans la fonction elle-même.
Les variables (3)
• Contraintes concernant les noms de variables
• Les noms de variables ne peuvent contenir que des lettres, chiffres, ou le
caractère "_" (underscore)
• Mon_Prenom est un nom valide
Les opérateurs d’affectation permettent d’initialiser une valeur ou d’en modifier son contenu. L’opérateur le
plus simple est l’opérateur d’assignation qui met la valeur de l’expression à droite sur la variable à gauche.
Le symbole “=” (égal) permet d’affecter une valeur (nombre ou chaîne de caractères) à une variable.
var a;
var b=nombre; //initialisation avec la valeur d’une autre variable
a = b; //affectation
// Et...
a = b = 0; // affecte 0 à a et à b
Il existe d’autres opérateurs qui sont des extensions de l’opérateur d’affectation. Ils sont répertoriés sur le
tableau suivant.
Les Opérateurs
+= Ajoute la valeur qui est à droite à la valeur qui est à gauche et affecte le
résultat à la variable à droite.
*= Multiplie la valeur qui est à droite par la valeur de la variable qui est à
gauche et affecte le résultat à la variable à droite.
Opérateurs arithmétique
Les opérateurs arithmétiques servent à faire les opérations de base d’addition, de
soustraction, de division et de multiplication.
+ Fait l’addition des deux opérandes
- Fait la soustraction des deux opérandes
* Fait la multiplication des deux opérandes
/ Fait la division des deux opérandes
% Opération de modulo
++ Opérateur d’incrémentation
-- Opérateur décrémentation
Les Opérateurs
• var a;
• var b;
• var r1 = a*b
• var r1 = a+1
• var r1 = b-1
• var r1 = a*b/2
OPERATEURS
Opérateurs de comparaison
Les opérateurs de comparaison permettent de comparer deux valeurs
et renvoient une valeur de type booléen (true, vrai ou false, faux) selon
les cas. JavaScript utilise les mêmes opérateurs que ceux du langage C.
Opérateurs logiques
Comme dit plus haut, sous JavaScript vous n’avez pas besoin de
spécifier le type d’une variable au moment de la déclaration. Toutefois,
la connaissance de types permet de maitriser les conversions implicites
de JavaScript ainsi que la signification des opérateurs suivant le type.
Number : Les nombres représentant aussi bien les entiers que les
nombres en virgule flottantes (nombres réels).
Boolean : Les Booléens qui sont des variables qui ne peuvent prendre
que deux valeurs true ou false.
Les types de données sous JavaScript
Undefined : Le type undefined. Une variable pour laquelle aucune valeur n’a
été assignée sera de type undefined. Une méthode ou instruction renvoie
également undefined si la variable à évaluer n’a pas de valeur assignée. Une
fonction renvoie undefined si aucune valeur n’a été retournée.
Les types de données sous JavaScript
Le type qui sera certainement celui le plus manipulé est le type chaine
de caractères. Pour l’affectation de chaine de caractères il suffit de
l’entourer de guillemets ou bien de créer un nouvel objet String.
var chaine = "Je suis une chaine de caractère avec des guillemets
doubles " ;
var chaine_2 = ‘Je suis une chaine de caractère avec des guillemet
simples’ ;
if (condition){
//code exécutée si condition est vraie
} else {
//code exécutée si condition est fausse
}
Structures de contrôle if
if (condition1) {
statement1;
} else if (condition2) {
statement2;
} else {
statement3;
}
Structures conditionnelles : switch case
switch (expression)
{
case étiquette :
instructions ;
break ;
case étiquette :
instructions ;
break ;
default :
instructions ;
}
356 23:12:10 Programmation Web 2012-2013
Boucles sous JavaScript
Une boucle est un bloc d’instructions qui sera répété tant qu’une
condition sera vérifiée (= true). Il y a plusieurs instructions sous
JavaScript qui permettent de réaliser des boucles : for, while et
do while. La syntaxe de ces boucles est presque identique aux
instructions sous langage C.
Boucles sous JavaScript
For
For
For
Il existe une variante de la boucle for permettant de parcourir un objet de type tableau
ou énumérable : for … in. La syntaxe générale est la suivante :
La variable récupère l’index permettant d’accéder aux objets dans objet. En d’autres
termes pour accéder aux éléments il faut utiliser objet [variable]. Le code suivant est une
illustration de comment utiliser cette boucle.
console.log(tab[c])
Boucles sous JavaScript
While
L’instruction while permet de créer une boucle qui s’exécute tant qu’une
condition de test est vérifiée. La condition est évaluée avant d’exécuter
l’instruction contenue dans la boucle. Cette boucle est la plus simple
d’utilisation puisqu’elle ne comporte qu’un seul “argument” : la condition:
while (condition) {
instructions;
}
Boucles sous JavaScript
While
var i = 0;
console.log(“Début de la boucle”)
while (i < 5){
console.log(“Intération “+i);
i++;
}
console.log (“Boucle terminée !”);
Boucles sous JavaScript
Do While
La boucle do …while est la soeur de la boucle while puisqu’il s’agit de la
même boucle sauf que le bloc d’instruction s’effectuera au minimum une
fois et ce même si la condition de la boucle n’est pas vérifiée dès le début.
Le code suivant est une illustration de la boucle do while de JavaScript.
var i = 5;
do
{
console.log("iteration "+(5-i+1));
i++;
} while (i < 5);
console.log("Boucle terminée !");
Les fonctions JavaScript
• Objet Array
• Déclaration
var tab1 = new Array(taille) ;
var tab2 = new Array(1, "a", 9, …) ;
index 0 1 2 …
• Utilisation
window.alert(tab2[0]) ; // 1
tab2[2] = 6 // 6 remplace 9
365
Tableaux
• Parcours
var tab2 = new Array(1, "a", 9) ;
for (i in tab2)
document.write("tab2[" + i + "] = "+ tab2[i]) ;
Ou
for(i=0;i< tab2.length;i++)
document.write("tab2[" + i + "] = " s+ tab2[i]) ;
// tab2[0] = 1
// tab2[1] = a
// tab2[2] = 9
<script>
var myArray = ['Rafael', 'Mathilde'];
myArray.push('Ahmed'); // Ajoute « Ahmed » à la fin du tableau
myArray.push('Jérôme', 'Guillaume');
// Ajoute « Jérôme » et « Guillaume » à la fin du tableau
</script>
Opérations sur les tableaux
<script>
var myArray = ['Rafael', 'Mathilde', 'Ahmed', 'Jérôme', 'Guillaume'];
myArray.shift(); // Retire « Rafael »
myArray.pop(); // Retire « Guillaume »
alert(myArray); // Affiche « Mathilde,Ahmed,Jérôme »
</script>
Opérations sur les tableaux
<script>
var cousinsString = 'Jérôme Guillaume Paul',
cousinsArray = cousinsString.split(' '); // Avec les espaces, on a trois items
alert(cousinsString);
alert(cousinsArray);
</script>
Opérations sur les tableaux
<script>
var cousinsString_2 = cousinsArray.join('-');
alert(cousinsString_2);
</script>
EXO
373
Introduction
<head>
<script type=”text/javascript”>
function hello() {
alert("Hello the World")
}
</script>
</head>
<body>
<input type="button" onclick="hello()" value="Dis bonjour" />
</body>
</html>
Evènement Souris & clavier
Manipulation DOM
378
DOM ?
HMTL JAVASCRIPT
</script>
Modifier contenu
HMTL JAVASCRIPT
function horloge(){
var dt=new Date();
var x =
window.document.getElementById("myId");
x.innerHTML = dt.getHours()+ ":"+
dt.getMinutes()+":" +dt.getSeconds();
setTimeout("horloge()",1000);
}
horloge();
</script>
Rajouter du texte
HMTL JAVASCRIPT
HMTL JAVASCRIPT
<script type="text/javascript">
<p class="p" onmouseout="changerCouleur()" > function changerCouleur(){
// on récupère l'élément
Lorem ipsum dolor sit amet, consectetur adipiscing var elmt = document.getElementsByClassName('p');
elit. Praesent ultrices velit eu rutrum egestas. Sed
tincidunt at ligula vehicula dignissim. Aenean id velit // on modifie son style
diam. Nulla nec odio id lorem ullamcorper elmt['0'].style.backgroundColor = "#ff0";
fermentum. Vestibulum non dui molestie, tempus elmt['0'].style.fontSize = "1.2em";
urna in, ornare orci. In hac habitasse platea dictumst. elmt['0'].style.textAlign = "center";
Donec tincidunt vel velit id iaculis. Cras placerat eu }
diam et cursus. Morbi sollicitudin elit eu ultricies
tempus. Nullam vitae metus et metus vulputate </script>
tristique vel sit amet nulla. Fusce accumsan neque
velit.
</p>
EXO