0. Introduction générale
Ce cours est une introduction aux fondements du développement web avec HTML et CSS. L'objectif est de vous fournir les compétences de base pour construire des pages web fonctionnelles et esthétiques, marquant ainsi la première étape de votre parcours dans le développement web.
1. Historique de l’évolution du web
Le Web (abréviation de World Wide Web) est une technologie développée en 1989 par Tim Berners-Lee, un ingénieur britannique du CERN. Son but initial était de permettre aux chercheurs de partager facilement des documents via Internet.
- 1989-1993 : Naissance du Web, introduction du premier navigateur "WorldWideWeb" (plus tard renommé Nexus), et publication de HTML 1.0. À ce stade, le Web est uniquement textuel.
- 1995 : Introduction de HTML 2.0. Les pages Web commencent à intégrer des images et des formulaires simples.
- 1997 : HTML 3.2 et HTML 4.0 introduisent les feuilles de styles CSS, les tableaux, les scripts (JavaScript).
- 2000-2010 : Le W3C (World Wide Web Consortium) devient l'organisme de normalisation du Web. Introduction de XHTML.
- 2014 : HTML5 devient la nouvelle norme. Elle offre des balises sémantiques, le support natif des médias (audio, vidéo), et la compatibilité mobile (responsive design).
- Aujourd'hui : Le Web est interactif, dynamique, et utilisé pour des applications complexes. Les technologies comme JavaScript, CSS Grid, et Flexbox permettent de créer des expériences utilisateur modernes.
Acteurs principaux : Le W3C (World Wide Web Consortium) et le WHATWG (Web Hypertext Application Technology Working Group) sont les organismes responsables de l'évolution des standards du Web.
Comprendre l’évolution du Web est essentiel pour apprécier les standards modernes comme HTML5 et CSS3, qui mettent l’accent sur l’accessibilité, l’interopérabilité et la compatibilité multi-appareils.
2. Balises de structure
Une page web est structurée comme un document hiérarchique. HTML5 introduit des balises sémantiques pour organiser clairement le contenu. Ces balises donnent du sens à chaque partie de la page. Cela facilite la lecture pour les navigateurs, les moteurs de recherche et les technologies d'assistance (lecteurs d'écran).
Les principales balises de structure HTML5
<header>: représente l'en-tête d'une page ou d'une section. Il peut contenir un logo, un titre ou un menu.<nav>: contient les liens de navigation du site (menu principal, par exemple).<main>: regroupe le contenu principal de la page. Il ne doit apparaître qu'une seule fois par page.<section>: représente une section logique du contenu. Par exemple, un chapitre de cours.<article>: désigne un contenu autonome pouvant être diffusé indépendamment (ex. : un article de blog ou une actualité).<aside>: correspond à du contenu secondaire (ex. : une barre latérale ou une note).<footer>: représente le pied de page d’un document ou d’une section.
Exemple complet d'une structure HTML5 de base
<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<title>Ma première page</title>
</head>
<body>
<header>
<h1>Bienvenue sur mon site</h1>
</header>
<nav>
<ul>
<li><a href=\"#\">Accueil</a></li>
<li><a href=\"#\">À propos</a></li>
</ul>
</nav>
<main>
<section>
<h2>Présentation</h2>
<p>Voici un paragraphe dans une section.</p>
</section>
<article>
<h2>Article indépendant</h2>
<p>Contenu autonome comme une news ou un post.</p>
</article>
</main>
<aside>
<p>Informations secondaires, lien utile...</p>
</aside>
<footer>
<p>© 2025 Mon site web</p>
</footer>
</body>
</html>
À retenir
- Les balises de structure sont essentielles pour l’organisation du contenu.
- Elles rendent le site plus accessible et mieux référencé par les moteurs de recherche.
- Utilisez toujours ces balises de manière logique et cohérente.
3. Textes
Le texte est la base du contenu web. HTML (HyperText Markup Language) utilise des balises pour structurer et formater le texte. Voici les principales :
3.1 Titres (headings)
Il existe 6 niveaux de titres : de <h1> (le plus important) à <h6> (le moins important). Ils structurent logiquement le contenu :
<h1>Titre principal</h1>
<h2>Sous-titre</h2>
<h3>Section</h3>
3.2 Paragraphes
Les paragraphes sont définis avec la balise <p>. Chaque paragraphe est automatiquement séparé du suivant.
<p>Ceci est un paragraphe de texte.</p>
3.3 Emphase et importance
<em>pour l'emphase (mise en italique)<strong>pour l'importance (mise en gras)
<p>Ceci est <em>important</em> et <strong>très important</strong>.</p>
3.4 Sauts de ligne et séparateurs
<br>pour forcer un saut de ligne (à éviter en excès)<hr>pour une ligne horizontale de séparation
3.5 Listes
Il existe 2 types de listes :
<ul>: liste non ordonnée (avec puces)<ol>: liste ordonnée (numérotée)
<ul>
<li>Élément 1</li>
<li>Élément 2</li>
</ul>
<ol>
<li>Étape 1</li>
<li>Étape 2</li>
</ol>
3.6 Autres balises utiles
<mark>: surlignage<small>: texte en petit<del>et<ins>: texte supprimé / ajouté<blockquote>: citation longue<abbr>: abréviation avec définition
<p>Voici une <mark>mise en évidence</mark>.</p>
<p><abbr title=\"Cascading Style Sheets\">CSS</abbr> est un langage de style.</p>
Exercices
4. Tableaux
Les tableaux HTML permettent de représenter des données structurées en lignes et en colonnes, comme dans un tableau Excel.
4.1 Structure de base d'un tableau
Voici les balises fondamentales utilisées :
<table>: Conteneur principal du tableau<tr>: Table Row = une ligne<th>: Table Header = une cellule d’en-tête (en gras, centrée)<td>: Table Data = une cellule normale
Exemple simple :
<table>
<tr>
<th>Nom</th>
<th>Âge</th>
</tr>
<tr>
<td>Alice</td>
<td>24</td>
</tr>
<tr>
<td>Bob</td>
<td>27</td>
</tr>
</table>
4.2 Sections sémantiques avancées
HTML permet de diviser un tableau en 3 grandes sections :
<thead>: pour l’en-tête du tableau<tbody>: pour le corps principal<tfoot>: pour le pied de tableau
Exemple avec ces sections :
<table>
<thead>
<tr>
<th>Produit</th>
<th>Prix</th>
</tr>
</thead>
<tbody>
<tr>
<td>Stylo</td>
<td>1€</td>
</tr>
<tr>
<td>Cahier</td>
<td>2€</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>Total</td>
<td>3€</td>
</tr>
</tfoot>
</table>
4.3 Fusion de cellules
On peut fusionner plusieurs colonnes ou lignes avec :
colspan=\"n\": fusionne n colonnesrowspan=\"n\": fusionne n lignes
Exemple avec fusion :
<table>
<tr>
<th rowspan=\"2\">Nom</th>
<th colspan=\"2\">Notes</th>
</tr>
<tr>
<th>Maths</th>
<th>Physique</th>
</tr>
<tr>
<td>Claire</td>
<td>15</td>
<td>17</td>
</tr>
</table>
4.4 Styliser un tableau avec CSS
Avec CSS, on peut améliorer l'apparence d’un tableau :
table {
border-collapse: collapse;
width: 100%;
}
th, td {
border: 1px solid #ccc;
padding: 0.5em;
text-align: left;
}
thead {
background-color: #f0f0f0;
}
Cette mise en forme rend les tableaux lisibles et professionnels.
Exercices5. Médias
Les médias permettent d'enrichir une page web avec des éléments visuels et sonores.
5.1 Les images
La balise principale pour insérer une image est <img>. Elle nécessite au moins l'attribut src (le chemin vers l’image) et l’attribut alt (texte alternatif pour l’accessibilité).
<img src="photo.jpg" alt="Description de l'image">
Pour rendre les images adaptatives (responsive), on peut utiliser l’attribut srcset qui propose plusieurs versions de l’image selon la résolution de l’écran.
<img src="photo-petite.jpg" srcset="photo-grande.jpg 1024w, photo-petite.jpg 480w" alt="Description">
5.2 Les formats d’image modernes
Les formats comme WebP ou AVIF offrent une meilleure compression sans perte visible, ce qui accélère le chargement des pages.
5.3 Les balises audio et vidéo
HTML5 introduit les balises <audio> et <video> pour intégrer facilement du son et des vidéos :
Audio :
<audio controls>
<source src="musique.mp3" type="audio/mpeg">
<source src="musique.ogg" type="audio/ogg">
Votre navigateur ne supporte pas la balise audio.
</audio>
Vidéo :
<video width="640" height="360" controls>
<source src="video.mp4" type="video/mp4">
<source src="video.webm" type="video/webm">
Votre navigateur ne supporte pas la balise vidéo.
</video>
5.4 Sous-titres et accessibilité
On peut ajouter des sous-titres à une vidéo avec la balise <track> :
<video controls>
<source src="video.mp4" type="video/mp4">
<track src="sous-titres.vtt" kind="subtitles" srclang="fr" label="Français">
</video>
Cela améliore l'accessibilité, notamment pour les personnes sourdes ou malentendantes.
5.5 Images responsives avancées
La balise <picture> permet de définir différentes sources d’image selon la taille ou le type d’écran :
<picture>
<source media="(min-width: 650px)" srcset="grand-format.jpg">
<source media="(min-width: 465px)" srcset="moyen-format.jpg">
<img src="petit-format.jpg" alt="Description">
</picture>
5.6 Bonnes pratiques
- Toujours fournir un texte alternatif (attribut
alt) pour les images. - Utiliser des formats adaptés au web pour optimiser la vitesse de chargement.
- Prévoir des alternatives accessibles pour les médias (sous-titres, descriptions audio).
- Tester la compatibilité des formats audio/vidéo avec différents navigateurs.
6. Formulaires
Les formulaires permettent aux utilisateurs d’entrer des données sur une page web. Ils sont essentiels pour les interactions comme les inscriptions, les recherches, ou les commentaires.
Les éléments de base
Un formulaire est défini par la balise <form>. À l'intérieur, on place des éléments d'entrée comme :
<input>: champ de saisie (texte, email, mot de passe, etc.)<textarea>: zone de texte multilignes<select>: menu déroulant<button>: bouton pour envoyer ou réinitialiser
Exemple simple de formulaire
<form action=\"/submit\" method=\"post\">
<label for=\"nom\">Nom :</label>
<input type=\"text\" id=\"nom\" name=\"nom\" required>
<label for=\"email\">Email :</label>
<input type=\"email\" id=\"email\" name=\"email\" required>
<label for=\"message\">Message :</label>
<textarea id=\"message\" name=\"message\" rows=\"4\"></textarea>
<button type=\"submit\">Envoyer</button>
</form>
Attributs importants des champs
type: définit la nature de l’entrée (texte, email, password, date, couleur, etc.).name: nom du champ envoyé au serveur.id: identifiant unique, utilisé pour lier le<label>.required: rend le champ obligatoire.placeholder: texte d’aide affiché dans le champ avant saisie.maxlengthetminlength: limites de longueur.pattern: expression régulière pour valider la saisie.
Validation native HTML5
HTML5 propose une validation automatique des champs avec les attributs required, type=\"email\" (vérifie le format d’email), et pattern. Si les données ne sont pas valides, le navigateur affiche un message d’erreur.
Types d’input courants
text: champ texte simpleemail: vérifie que la valeur ressemble à une adresse emailpassword: masque la saisienumber: pour les nombres, avec optionsminetmaxdate: sélection d’une date via un calendriercolor: choix d’une couleur via un sélecteurcheckbox: case à cocher (oui/non)radio: boutons radio pour choix exclusif
Exemple avec différents types
<form>
<label>Nom d’utilisateur :</label>
<input type=\"text\" name=\"username\" placeholder=\"Votre pseudo\" required>
<label>Mot de passe :</label>
<input type=\"password\" name=\"password\" required>
<label>Âge :</label>
<input type=\"number\" name=\"age\" min=\"1\" max=\"100\">
<label>Date de naissance :</label>
<input type=\"date\" name=\"birthdate\">
<label>Couleur préférée :</label>
<input type=\"color\" name=\"favcolor\">
<fieldset>
<legend>Sexe :</legend>
<input type=\"radio\" id=\"homme\" name=\"gender\" value=\"homme\">
<label for=\"homme\">Homme</label>
<input type=\"radio\" id=\"femme\" name=\"gender\" value=\"femme\">
<label for=\"femme\">Femme</label>
</fieldset>
<label>Abonnement newsletter :</label>
<input type=\"checkbox\" name=\"newsletter\">
<button type=\"submit\">Envoyer</button>
</form>
Accessibilité
Utiliser toujours la balise <label> liée à un champ grâce à l’attribut for (ou en enveloppant l’input). Cela améliore la navigation pour les personnes utilisant des lecteurs d’écran.
7. Feuilles de styles CSS
CSS (Cascading Style Sheets) est le langage qui permet de définir la présentation des pages web. Tandis que le HTML structure le contenu, le CSS s'occupe de la mise en forme (couleurs, polices, positionnement, etc.).
7.1 Syntaxe de base
Une règle CSS se compose d’un sélecteur qui cible un ou plusieurs éléments HTML, et d’un bloc de déclaration contenant des propriétés et leurs valeurs :
sélecteur {
propriété: valeur;
}
Exemple :
p {
color: blue;
font-size: 16px;
}
Ici, tous les <p> auront un texte bleu de taille 16 pixels.
7.2 Sélecteurs
Les sélecteurs permettent de cibler des éléments précis :
element: tous les éléments de ce type (ex:p)..class: tous les éléments avec cette classe (ex:.important).#id: l’élément avec cet identifiant unique (ex:#menu).- Combinaisons plus complexes (descendants, enfants, etc.) permettent un ciblage précis.
7.3 Le modèle de boîte (Box model)
Chaque élément HTML est représenté comme une boîte rectangulaire constituée de :
- Contenu : texte, image, etc.
- Padding : espace entre le contenu et la bordure.
- Bordure : contour autour du padding.
- Margin : espace entre la bordure et les autres éléments.
Comprendre le box model est essentiel pour contrôler l’espacement et la taille des éléments.
7.4 Mise en page : display, position, flexbox et grid
Display détermine comment un élément est affiché :
block: élément sur une nouvelle ligne, occupe toute la largeur.inline: élément dans la ligne de texte, largeur dépend du contenu.inline-block: similaire à inline, mais accepte les dimensions (largeur/hauteur).
Position contrôle le placement :
static: position normale (par défaut).relative: déplacé par rapport à sa position normale.absolute: positionné par rapport à l’ancêtre positionné.fixed: position fixe par rapport à la fenêtre.
Pour les mises en page complexes, on utilise des systèmes modernes :
- Flexbox : organise les éléments en ligne ou colonne avec contrôle facile de l’alignement et de l’espace.
- Grid : système en grille bidimensionnelle pour un placement précis en lignes et colonnes.
7.5 Couleurs, polices et styles
CSS permet de définir :
- Les couleurs via noms, hexadécimal (#123abc), rgb(), hsl().
- Les polices avec la propriété
font-family(ex: Arial, sans-serif). - La taille des polices avec
font-size. - Le style de texte : gras (
font-weight), italique (font-style), souligné, etc.
7.6 Responsive design
Pour que les pages s’adaptent à toutes tailles d’écran (mobiles, tablettes, desktop), on utilise :
- Des unités relatives (
em,rem,%) plutôt que fixes (pixels). - Les media queries qui appliquent des styles spécifiques selon la largeur de l’écran :
@media (max-width: 600px) {
body {
background-color: lightgrey;
}
}
7.7 Transitions et animations
Pour rendre une page plus vivante, CSS propose :
- Transitions : effets d’adoucissement lors du changement d’une propriété (ex: couleur au survol).
- Animations : mouvements plus complexes définis par des images clés (keyframes).
button {
transition: background-color 0.3s ease;
}
button:hover {
background-color: #005f99;
}
7.8 Organisation des styles
Le CSS peut être :
- Inline : directement dans une balise HTML avec l’attribut
style(à éviter pour le maintien). - Interne : dans une balise
<style>dans le<head>. - Externe : dans des fichiers
.cssséparés, liés via<link>, méthode recommandée.
Pour les projets complexes, on utilise aussi des méthodologies (BEM) et préprocesseurs (Sass) pour organiser le code CSS efficacement.
ExercicesConclusion: Éléments Clés du Cours HTML & CSS
Ce cours a présenté les bases essentielles pour la création de pages web : HTML pour structurer le contenu et CSS pour le mettre en forme. En parcourant l'historique du web jusqu'aux techniques de style modernes, ce support vise à une compréhension globale du fonctionnement d'une page web. La maîtrise de ces concepts est la première étape cruciale pour aborder le développement web.
Éléments Essentiels à Retenir
- 1. Historique du Web : Comprendre l'évolution du web et le rôle de Tim Berners-Lee permet de mieux appréhender les technologies actuelles.
-
2. Balises de structure : L'utilisation correcte des balises sémantiques (
<header>,<nav>,<main>,<article>,<aside>,<footer>) est fondamentale pour l'accessibilité et le référencement. -
3. Textes : Savoir formater le texte avec les titres (
<h1>-<h6>), paragraphes (<p>), listes (<ul>,<ol>,<li>), et balises d'emphase (<em>,<strong>) est la base de tout contenu lisible. -
4. Tableaux : Les balises
<table>,<tr>,<th>,<td>, ainsi que<thead>,<tbody>,<tfoot>et les attributscolspan/rowspansont indispensables pour organiser des données structurées. -
5. Médias : L'intégration d'images (
<img>avecaltetsrcset), audio (<audio>), et vidéo (<video>aveccontrolset<track>) enrichit vos pages. Pensez toujours à l'accessibilité et aux formats optimisés. -
6. Formulaires : La balise
<form>et les différents types d'inputs (<input type="...">,<textarea>,<select>) avec leurs attributs clés (name,id,required,placeholder) permettent l'interaction utilisateur. L'association<label>etidest cruciale pour l'accessibilité. -
7. Feuilles de styles CSS : La syntaxe
sélecteur { propriété: valeur; }est la base du CSS. Maîtriser les sélecteurs, le Box Model, les propriétés de mise en page (display,position, Flexbox, Grid), et le responsive design (@media queries) est essentiel pour le style et l'adaptabilité de vos pages. Les transitions ajoutent de l'interactivité.
La pratique régulière de ces éléments est la clé pour consolider vos compétences et progresser dans votre parcours de développement web.