Les Trois Piliers du Web : HTML, CSS et JavaScript
Pour créer une page web interactive, tu dois maîtriser trois langages complémentaires. Imagine une maison : HTML (HyperText Markup Language) en est la structure, les murs et les pièces. C'est lui qui définit le contenu de base (titres, paragraphes, images, boutons). CSS (Cascading Style Sheets) est la décoration, la peinture et l'agencement des meubles. Il s'occupe de l'apparence (couleurs, polices, mise en page). Enfin, JavaScript (souvent abrégé JS) est l'électricité, la plomberie et tout ce qui rend la maison "vivante" et réactive. C'est le langage de programmation qui permet d'ajouter de l'interactivité, comme réagir à un clic, modifier du contenu dynamiquement ou valider un formulaire.
Pour le programme de Numérique et Sciences Informatiques (NSI), comprendre cette séparation des rôles est fondamental. Cela s'appelle la séparation des préoccupations (separation of concerns), un principe clé en informatique qui rend le code plus clair, plus facile à maintenir et à faire évoluer.
Structure de Base d'un Fichier HTML
Commençons par le squelette, le fichier HTML. Voici le code minimal que tu dois connaître par cœur. Crée un fichier nommé index.html avec le contenu suivant :
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Ma Première Page Interactive</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1 id="titre-principal">Bonjour le monde !</h1> <p class="description">Ceci est mon premier paragraphe.</p> <button id="mon-bouton">Clique-moi !</button> <script src="script.js"></script> </body> </html>
Décortiquons ce code :
- <!DOCTYPE html> : Indique au navigateur qu'il s'agit d'un document HTML5.
- <html lang="fr"> : Balise racine, avec l'attribut
langpour la langue. - <head> : Contient les métadonnées (non visibles) comme l'encodage, le titre de l'onglet et le lien vers la feuille de style CSS.
- <body> : Contient tout le contenu visible de la page.
- Les balises
<h1>,<p>et<button>sont des éléments de contenu. Nous leur avons donné des attributsidetclasspour pouvoir les cibler facilement avec CSS et JavaScript. - La balise
<script>à la fin du body charge notre fichier JavaScript.
Les Sélecteurs CSS : ID et Classe
Tu as remarqué id="titre-principal" et class="description". En CSS et JS, on utilise ces sélecteurs pour cibler des éléments précis. Une classe (précédée d'un point . en CSS) peut être utilisée sur plusieurs éléments. Un ID (précédé d'un dièse # en CSS) doit être unique dans la page. C'est une convention importante à respecter.
Styliser la Page avec CSS
Maintenant, créons le fichier style.css. C'est ici que la magie visuelle opère. Voici un exemple pour styliser notre page :
/* style.css */ body { font-family: Arial, sans-serif; background-color: #f0f0f0; text-align: center; padding: 50px; } #titre-principal { color: #2c3e50; font-size: 2.5em; margin-bottom: 20px; } .description { color: #7f8c8d; font-size: 1.2em; line-height: 1.6; } #mon-bouton { background-color: #3498db; color: white; border: none; padding: 15px 30px; font-size: 1.1em; border-radius: 8px; cursor: pointer; transition: background-color 0.3s ease; } #mon-bouton:hover { background-color: #2980b9; }
Ce code CSS fait plusieurs choses :
- Il définit une police et un fond gris clair pour toute la page (
body). - Il stylise le titre principal (
#titre-principal) en bleu foncé et plus grand. - Il donne une couleur grise au paragraphe de la classe
.description. - Il crée un beau bouton bleu avec des coins arrondis. La propriété
transitionet la pseudo-classe:hoverajoutent une animation fluide au survol de la souris. C'est déjà une première forme d'interactivité purement visuelle gérée par CSS !
Donner Vie à la Page avec JavaScript
Passons à l'interactivité "intelligente". Crée le fichier script.js. Notre objectif : faire en sorte que lorsque l'utilisateur clique sur le bouton, le titre change et un message s'affiche.
// script.js // 1. On "attrape" les éléments HTML dont on a besoin const bouton = document.getElementById('mon-bouton'); const titre = document.getElementById('titre-principal'); // 2. On définit une fonction qui sera exécutée au clic function reagirAuClic() { // On change le texte du titre titre.textContent = "Super ! Tu as cliqué !"; // On change la couleur du titre titre.style.color = "#e74c3c"; // On affiche une alerte (pop-up) alert("Interaction réussie ! Bienvenue en NSI !"); // Bonus : on ajoute un paragraphe dynamiquement const nouveauParagraphe = document.createElement('p'); nouveauParagraphe.textContent = "Ce paragraphe a été ajouté par JavaScript !"; nouveauParagraphe.className = "description"; // On lui donne une classe existante document.body.appendChild(nouveauParagraphe); } // 3. On dit au bouton d'appeler notre fonction quand on clique dessus // C'est ce qu'on appelle "attacher un écouteur d'événement" (event listener) bouton.addEventListener('click', reagirAuClic);
Analysons ce script étape par étape :
- Ligne 4-5 : On utilise
document.getElementById()pour stocker des références vers nos éléments HTML dans des variables. C'est comme mettre un signet sur une page. - Ligne 8 : On déclare une fonction nommée
reagirAuClic. Une fonction est un bloc de code réutilisable qui s'exécute quand on l'appelle. - À l'intérieur de la fonction : On modifie le contenu texte (
textContent) et le style (style.color) du titre. On utilisealert()pour une pop-up simple. Enfin, on montre comment créer un élément HTML (<p>) à partir de rien avecdocument.createElement(), le configurer, et l'ajouter à la page avecappendChild(). C'est très puissant ! - Ligne 23 : C'est la ligne clé. On ajoute un "écouteur d'événement" (event listener) sur le bouton. On lui dit : "Quand ('click') tu détectes un clic sur ce bouton, exécute la fonction
reagirAuClic."
Projet NSI : Crée un Compteur de Clics
Pour aller plus loin et valider tes compétences, voici un mini-projet parfait pour NSI : un compteur de clics. Modifie ton index.html pour ajouter un affichage :
<p>Nombre de clics : <span id="compteur">0</span></p>
Puis, modifie ton script.js :
const compteurAffichage = document.getElementById('compteur'); let nombreDeClics = 0; // Variable d'état function reagirAuClic() { nombreDeClics++; // Incrémente le compteur compteurAffichage.textContent = nombreDeClics; // Met à jour l'affichage titre.textContent = `Clics : ${nombreDeClics}`; // Change la couleur en fonction du nombre if (nombreDeClics > 10) { titre.style.color = "#2ecc71"; // Vert } else if (nombreDeClics > 5) { titre.style.color = "#f39c12"; // Orange } } bouton.addEventListener('click', reagirAuClic);
Ce projet introduit des concepts algorithmiques essentiels en NSI :
- Variable d'état (
nombreDeClics) : Elle garde en mémoire l'état courant de l'application. - Incrimination (
++) : Modifier la valeur d'une variable. - Structure conditionnelle (
if...else if) : Exécuter du code différent selon une condition. - Template literal (les backticks ``) : Pour insérer une variable dans une chaîne de caractères.
Tu as maintenant une page web pleinement interactive ! Le code complet est à toi. N'hésite pas à expérimenter : change les couleurs, ajoute d'autres boutons avec des fonctions différentes, ou crée un petit jeu. C'est en pratiquant que l'on comprend et retient.
