Aller au contenu principal

Projet : site d'une team e-sport

Vous êtes le webmaster de Team Nexus, une équipe e-sport montante.

Votre mission : créer le site officiel de la team à partir du squelette HTML fourni.

Aperçu du site Team Nexus finalisé

Point de départ

Copiez ce code dans un nouveau fichier index.html (dans un dossier team_nexus) :

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Team Nexus — E-sport</title>
<!-- Étape 9 : lier la feuille de style CSS ici -->
</head>
<body>

<!-- Étape 1 : ouvrir <header> ici -->
<h1>Team Nexus</h1>
<!-- Étape 2 : ajouter le menu <nav> ici -->
<!-- Étape 1 : fermer </header> ici -->

<!-- Étape 3 : ouvrir <main> ici -->

<section id="presentation">
<h2>Qui sommes-nous ?</h2>
<!-- Étape 4 : insérer l'image de l'équipe ici -->
<p>Team Nexus est une équipe e-sport fondée en 2021, spécialisée dans les jeux de tir tactique et les MOBA.</p>
<p>Notre mission : repousser les limites du jeu compétitif.</p>
</section>

<section id="roster">
<h2>Notre roster</h2>
<!-- Étape 5 : créer le tableau des joueurs ici -->
</section>

<section id="palmares">
<h2>Notre palmarès</h2>
<!-- Étape 6 : créer la liste ordonnée des victoires ici -->
</section>

<section id="rejoindre">
<h2>Rejoindre la team</h2>
<p>Tu penses avoir le niveau ? Remplis ce formulaire !</p>
<!-- Étape 7 : créer le formulaire de recrutement ici -->
</section>

<!-- Étape 3 : fermer </main> ici -->

<!-- Étape 8 : remplacer cette ligne par un <footer> -->
<p>&copy; 2024 Team Nexus</p>

</body>
</html>

Créez également un fichier styles.css dans le même dossier avec ce code :

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
background-color: #0f0f1a;
color: #e0e0e0;
font-family: 'Segoe UI', Arial, sans-serif;
}
header {
background: linear-gradient(135deg, #1a1a2e, #16213e);
border-bottom: 3px solid #7c3aed;
padding: 20px 40px;
display: flex;
align-items: center;
justify-content: space-between;
}
h1 { color: #a78bfa; font-size: 2em; text-transform: uppercase; letter-spacing: 3px; }
h2 { color: #a78bfa; font-size: 1.4em; text-transform: uppercase; letter-spacing: 2px; margin-bottom: 20px; }
nav ul { list-style: none; display: flex; gap: 30px; }
nav a { color: #e0e0e0; text-decoration: none; font-weight: bold; text-transform: uppercase; font-size: 0.85em; letter-spacing: 1px; }
nav a:hover { color: #a78bfa; }
main { max-width: 1100px; margin: 40px auto; padding: 0 20px; }
section {
margin-bottom: 40px;
padding: 30px;
background-color: #16213e;
border-radius: 10px;
border-left: 4px solid #7c3aed;
}
img { border-radius: 8px; max-width: 100%; margin-bottom: 15px; }
table { width: 100%; border-collapse: collapse; margin-top: 15px; }
th { background-color: #7c3aed; color: white; padding: 12px; text-align: left; text-transform: uppercase; font-size: 0.85em; }
td { padding: 12px; border-bottom: 1px solid #2d2d4e; color: #c0c0d0; }
tr:hover td { background-color: #1e1e3a; }
ul, ol { padding-left: 25px; line-height: 2; }
li { color: #c0c0d0; margin-bottom: 8px; }
form { display: flex; flex-direction: column; gap: 15px; max-width: 500px; }
label { color: #a78bfa; font-weight: bold; font-size: 0.9em; text-transform: uppercase; letter-spacing: 1px; }
input, textarea, select {
background-color: #0f0f1a;
border: 2px solid #7c3aed;
color: #e0e0e0;
padding: 10px;
border-radius: 5px;
font-size: 1em;
}
button {
background-color: #7c3aed;
color: white;
border: none;
padding: 12px 30px;
font-size: 1em;
font-weight: bold;
text-transform: uppercase;
letter-spacing: 2px;
border-radius: 5px;
cursor: pointer;
align-self: flex-start;
}
button:hover { background-color: #6d28d9; }
footer {
text-align: center;
padding: 30px;
background-color: #1a1a2e;
border-top: 3px solid #7c3aed;
color: #888;
margin-top: 40px;
}
footer a { color: #a78bfa; text-decoration: none; }

Créez enfin un sous-dossier images/ dans votre dossier team_nexus. Recherchez une photo d'équipe e-sport sur Internet et enregistrez-la sous le nom team.jpg dans ce dossier.

La page devra contenir

  • Un en-tête <header> avec le nom de la team
  • Un menu de navigation <nav> avec des liens vers chaque section de la page
  • Une image de présentation de l'équipe
  • Un tableau <table> listant les joueurs avec leur pseudo, jeu et rôle (avec rowspan)
  • Une liste ordonnée <ol> des principales victoires de la team
  • Un formulaire <form> de recrutement avec champs de saisie, liste déroulante, zone de texte et bouton
  • Un pied de page <footer> avec copyright et lien externe
  • Un lien vers la feuille de style CSS

Consignes

Étape 1 — Ajouter la balise <header> autour du titre


Bonne pratique - La balise header

La balise <header> regroupe les éléments d'introduction : logo, titre, navigation principale. Elle aide les moteurs de recherche et les lecteurs d'écran à identifier le contenu de navigation.

Étape 2 — Créer le menu de navigation

Le menu relie chaque entrée à une section de la page grâce à des ancres (href="#id").


Bonne pratique - Navigation sémantique

Utilisez <nav> + <ul> + <li> + <a> pour structurer un menu. Cette combinaison est reconnue par les lecteurs d'écran et améliore l'accessibilité du site.

Étape 3 — Envelopper le contenu dans <main>

La balise <main> délimite le contenu central de la page, distinct du <header> et du <footer>.


Bonne pratique - Une seule balise main

Il ne doit y avoir qu'une seule balise <main> par page. Elle signale aux moteurs de recherche quel est le contenu principal.

Étape 4 — Insérer l'image de présentation de l'équipe

Dans la section #presentation, ajoutez une image juste après le titre <h2>.


Bonne pratique - Attribut alt obligatoire

L'attribut alt est obligatoire sur toutes les images. Il décrit l'image aux personnes malvoyantes et s'affiche si l'image ne charge pas.

Étape 5 — Créer le tableau du roster

Dans la section #roster, créez un tableau listant les membres de l'équipe avec 4 colonnes : Pseudo, Prénom, Jeu et Rôle.

ShadowX et IceBreaker jouent tous les deux à Valorant : utilisez rowspan="2" sur la cellule Valorant pour fusionner les deux lignes verticalement.


Bonne pratique - rowspan

Quand vous utilisez rowspan="2" sur une cellule, supprimez la cellule correspondante dans la ligne suivante. Sinon le tableau sera décalé d'une colonne.

Étape 6 — Créer la liste des victoires

Dans la section #palmares, créez une liste ordonnée des principales victoires de la team.


Bonne pratique - ol vs ul

Utilisez <ol> (ordered list) quand l'ordre est important (classement, étapes). Utilisez <ul> pour des éléments sans ordre particulier.

Étape 7 — Créer le formulaire de recrutement

Dans la section #rejoindre, créez un formulaire avec un champ texte (pseudo), une liste déroulante (jeu principal), une zone de texte (présentation) et un bouton d'envoi.


Bonne pratique - label et for

Associez toujours un <label> à son champ via for (sur le label) et id (sur le champ). Cela améliore l'accessibilité et permet de cliquer sur le libellé pour activer le champ.

Étape 8 — Ajouter le pied de page

Remplacez le simple <p> en bas du <body> par une balise <footer> contenant le copyright et un lien externe.


Bonne pratique - Balise footer

La balise <footer> contient généralement les informations de copyright, les liens secondaires et les mentions légales. Elle peut apparaître en bas de la page entière ou à l'intérieur d'une <section>.

Étape 9 — Lier la feuille de style CSS

Sans le lien vers styles.css, votre page s'affichera en noir et blanc avec la mise en page par défaut du navigateur.


Bonne pratique - Feuille de style externe

Toujours utiliser une feuille de style externe plutôt que des styles inline. Une seule modification dans styles.css s'applique à toutes les pages du site.

Valider votre code HTML

Testez votre page dans le navigateur, puis validez votre code sur https://validator.w3.org (onglet "Validate by Direct Input").

attention

Un code HTML valide garantit que votre site s'affiche correctement dans tous les navigateurs, y compris sur mobile.

Conseils et astuces

  • Si le CSS ne s'applique pas, vérifiez que styles.css est bien dans le même dossier que index.html
  • Les ancres (href="#roster") ne fonctionnent que si la section a bien l'attribut id correspondant
  • Ouvrez les outils développeur (F12) pour inspecter les éléments et comprendre la structure
  • Pour le rowspan, vérifiez bien que la ligne suivante a une cellule de moins que les autres
📌 Une solution complète