Aller au contenu

Partie 1 : HTML et CSS


Une page Web est un document affiché par un navigateur. Elle est constituée de trois langages complémentaires :

LangageRôleAnalogie
HTMLStructure et contenuLe squelette
CSSMise en forme et apparenceLes vêtements
JavaScriptComportement et interactivitéLes muscles

Le navigateur (Firefox, Chrome, Edge...) est le client : il envoie une requête au serveur qui lui renvoie les fichiers HTML, CSS et JavaScript composant la page.

┌──────────┐ requête HTTP ┌──────────┐
│ Client │ ───────────────► │ Serveur │
│(navigat.)│ ◄─────────────── │ (Web) │
└──────────┘ réponse HTTP └──────────┘
(HTML/CSS/JS)

Le client demande une ressource (page, image, script) et le serveur la lui fournit. Cette communication repose sur le protocole HTTP (ou HTTPS pour la version sécurisée).


HTML (HyperText Markup Language) est un langage de balisage qui permet de structurer le contenu d'une page Web. Il ne s'agit pas d'un langage de programmation : HTML décrit la structure du document (titres, paragraphes, listes, liens...) à l'aide de balises.

La version actuelle est HTML5.

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Ma première page</title>
</head>
<body>
<h1>Bienvenue</h1>
<p>Ceci est un paragraphe.</p>
</body>
</html>
ÉlémentRôle
<!DOCTYPE html>Indique au navigateur qu'il s'agit de HTML5
<html lang="fr">Élément racine, langue française
<head>En-tête (métadonnées, titre, liens CSS)
<meta charset="utf-8">Encodage des caractères
<title>Titre affiché dans l'onglet du navigateur
<body>Corps de la page (contenu visible)
<h1>Titre principal</h1>
<h2>Sous-titre</h2>
<h3>Sous-sous-titre</h3>
<p>Un paragraphe de texte.</p>

Il existe 6 niveaux de titres (<h1> à <h6>). On ne saute pas de niveau : après <h1> vient <h2>, pas <h4>.

<strong>Texte important (gras)</strong>
<em>Texte accentué (italique)</em>
<br> <!-- retour à la ligne -->
<!-- Liste non ordonnée (à puces) -->
<ul>
<li>Premier élément</li>
<li>Deuxième élément</li>
</ul>
<!-- Liste ordonnée (numérotée) -->
<ol>
<li>Étape 1</li>
<li>Étape 2</li>
</ol>
<a href="https://www.example.com">Texte du lien</a>
<a href="page2.html">Lien vers une page locale</a>

L'attribut href (Hypertext Reference) contient l'adresse de la cible.

<img src="photo.jpg" alt="Description de l'image">

L'attribut alt est obligatoire : il décrit l'image pour les lecteurs d'écran et s'affiche si l'image ne charge pas.

<table>
<tr>
<th>Nom</th>
<th>Âge</th>
</tr>
<tr>
<td>Alice</td>
<td>17</td>
</tr>
<tr>
<td>Bob</td>
<td>16</td>
</tr>
</table>
BaliseSignification
<table>Début du tableau
<tr>Ligne (table row)
<th>Cellule d'en-tête (table header)
<td>Cellule de données (table data)

Les attributs apportent des informations complémentaires à une balise. Ils se placent dans la balise ouvrante :

<balise attribut="valeur">contenu</balise>

Attributs courants :

AttributRôleExemple
idIdentifiant unique<p id="intro">
classClasse (pour le CSS)<p class="important">
styleStyle en ligne<p style="color: red;">
hrefAdresse d'un lien<a href="...">
srcSource d'une image<img src="...">

Pour structurer la page en blocs, on utilise des conteneurs :

<div>Bloc générique</div>
<span>Portion de texte en ligne</span>
<!-- Balises sémantiques HTML5 -->
<header>En-tête de page</header>
<nav>Barre de navigation</nav>
<main>Contenu principal</main>
<section>Section thématique</section>
<article>Article autonome</article>
<footer>Pied de page</footer>

Les balises sémantiques (<header>, <nav>, <main>, <footer>...) sont préférables à <div> car elles donnent du sens au contenu, ce qui améliore l'accessibilité et le référencement.


CSS (Cascading Style Sheets, feuilles de style en cascade) permet de définir la mise en forme d'une page HTML : couleurs, polices, marges, disposition des éléments, etc.

<p style="color: blue; font-size: 18px;">Texte bleu</p>
sélecteur {
propriété: valeur;
propriété: valeur;
}

Exemple :

h1 {
color: #2c3e50;
font-size: 24px;
text-align: center;
}
SélecteurCibleExemple
pToutes les balises <p>p { color: red; }
.classeTous les éléments avec class="classe".important { font-weight: bold; }
#identifiantL'élément avec id="identifiant"#titre { font-size: 32px; }
div pLes <p> à l'intérieur d'un <div>div p { margin: 10px; }
p {
color: #333333; /* couleur du texte */
font-family: Arial, sans-serif;
font-size: 16px;
font-weight: bold; /* gras */
text-align: center; /* left, right, center, justify */
text-decoration: underline;
line-height: 1.5;
}

Les couleurs peuvent être exprimées de plusieurs façons :

color: red; /* nom de couleur */
color: #ff0000; /* code hexadécimal */
color: rgb(255, 0, 0); /* rouge, vert, bleu (0-255) */

Chaque élément HTML est une boîte composée de 4 zones :

┌─────────── margin (marge extérieure) ───────────┐
│ ┌──────── border (bordure) ────────┐ │
│ │ ┌───── padding (marge intérieure) ─────┐ │
│ │ │ │ │
│ │ │ contenu │ │
│ │ │ │ │
│ │ └──────────────────────────────────────┘ │
│ └───────────────────────────────────────────┘ │
└──────────────────────────────────────────────────┘
div {
margin: 10px; /* marge extérieure */
padding: 15px; /* marge intérieure */
border: 2px solid black; /* bordure */
width: 300px;
height: 200px;
background-color: #f0f0f0;
}

Flexbox permet de disposer les éléments de manière flexible :

.conteneur {
display: flex;
justify-content: center; /* centrage horizontal */
align-items: center; /* centrage vertical */
gap: 10px; /* espacement entre éléments */
}

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Ma page NSI</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1>Bienvenue en NSI</h1>
<nav>
<a href="#cours">Cours</a>
<a href="#exercices">Exercices</a>
<a href="#contact">Contact</a>
</nav>
</header>
<main>
<section id="cours">
<h2>Les cours</h2>
<p>Retrouvez ici les cours de NSI Première.</p>
<ul>
<li>Représentation des données</li>
<li>Traitement de données en tables</li>
<li>Interactions homme-machine</li>
</ul>
</section>
<section id="exercices">
<h2>Les exercices</h2>
<p>Des exercices corrigés pour chaque partie.</p>
</section>
</main>
<footer id="contact">
<p>Lycée - NSI Première - 2025</p>
</footer>
</body>
</html>

Fichier style.css associé :

body {
font-family: Arial, sans-serif;
margin: 0;
background-color: #f5f5f5;
color: #333;
}
header {
background-color: #2c3e50;
color: white;
padding: 20px;
text-align: center;
}
nav a {
color: #ecf0f1;
margin: 0 15px;
text-decoration: none;
}
nav a:hover {
text-decoration: underline;
}
main {
max-width: 800px;
margin: 20px auto;
padding: 20px;
}
section {
background: white;
padding: 20px;
margin-bottom: 20px;
border-radius: 8px;
}
footer {
text-align: center;
padding: 10px;
background-color: #2c3e50;
color: white;
}

Tous les navigateurs modernes intègrent des outils de développement (touche F12 ou clic droit → « Inspecter »).

L'inspecteur permet de :

  • Voir le code HTML de la page en temps réel
  • Modifier le CSS temporairement pour tester des changements
  • Explorer le DOM (Document Object Model), la représentation arborescente de la page
  • Déboguer le JavaScript dans la console

  • HTML structure le contenu avec des balises (<h1>, <p>, <a>, <img>, <div>...).
  • Les attributs complètent les balises (id, class, href, src, alt...).
  • CSS met en forme le contenu avec des règles sélecteur { propriété: valeur; }.
  • On sélectionne les éléments par balise (p), classe (.classe) ou identifiant (#id).
  • Le modèle de boîte (margin, border, padding, contenu) régit l'espacement.
  • La séparation HTML / CSS en fichiers distincts est une bonne pratique.
  • L'inspecteur du navigateur (F12) permet d'explorer et modifier une page en temps réel.