Séance 4
Objectifs
Utiliser les balises HTML de liste et tableau.
Utiliser les sélecteurs avancés.
Être capable de structurer une navigation et une liste de projets.
Méthode : Arborescence

En plus du fichier style.css commun, des feuilles de style spécifiques ont été ajoutées pour chaque page.
Méthode : index.html
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Portfolio de Vincent Vanneste</title>
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/accueil.css">
</head>
<body>
<header id="haut">
<a href="images/photo.jpg">Lien vers ma photo</a>
<h1>Portfolio de Vincent Vanneste</h1>
<nav>
<ul>
<li><a href="index.html">Accueil</a></li>
<li><a href="projets.html">Projets</a></li>
<li><a href="https://www.univ-littoral.fr/" target="_blank">ULCO</a></li>
</ul>
</nav>
<hr>
</header>
<main>
<nav>
<ul>
<li><a href="#about">À propos</a></li>
<li><a href="#competences">Compétences</a></li>
<li><a href="#experiences">Expériences</a></li>
<li><a href="#formations">Formations</a></li>
</ul>
</nav>
<!-- À propos -->
<section id="about">
<h2>À propos</h2>
<p>Je suis directeur des études du DEUST WMI de Calais et j'enseigne les fondamentaux du développement web
(HTML, CSS, JavaScript, PHP). Passionné par la transmission des connaissances, j'accompagne mes
étudiants dans l'acquisition des compétences nécessaires pour réussir dans le secteur du numérique.</p>
<address>
<dl>
<dt>Localisation :</dt>
<dd>Calais, France</dd>
<dt>Site :</dt>
<dd><a href="https://vincent-vanneste.fr/" target="_blank">vincent-vanneste.fr</a></dd>
<dt>Email :</dt>
<dd><a href="mailto:vincent.vanneste@univ-littoral.fr">vincent.vanneste@univ-littoral.fr</a></dd>
</dl>
</address>
</section>
<hr>
<!-- Compétences -->
<section id="competences">
<h2>Compétences</h2>
<ul>
<li>HTML</li>
<li>CSS</li>
<li>Responsive</li>
<li>Accessibilité</li>
<li>JavaScript</li>
<li>PHP • Laravel 11</li>
<li>MySQL</li>
<li>Git & GitHub</li>
</ul>
</section>
<hr>
<!-- Expériences -->
<section id="experiences">
<h2>Expériences récentes</h2>
<ul>
<li>
<strong>Enseignant – Licence 1 Informatique</strong><br>
<time datetime="2025">2025</time> •
<address>
<a href="https://www.univ-littoral.fr/" target="_blank">ULCO</a>
</address><br>
Introduction à HTML, CSS, JS
</li>
<li>
<strong>Directeur des études – DEUST WMI</strong><br>
<time datetime="2024-2025">2024 → 2025</time> •
<address>
<a href="https://www.univ-littoral.fr/" target="_blank">FCU ULCO</a>
</address>
</li>
</ul>
</section>
<!-- Formations -->
<section id="formations">
<h2>Formations</h2>
<ul>
<li>
<strong>Doctorat productique, automatique et informatique industrielle</strong><br>
<time datetime="2000">2000</time> •
<address>
<a href="https://www.univ-lille.fr/" target="_blank">Université de Lille</a>
</address>
</li>
<li>
<strong>CAPET Technologie</strong><br>
<time datetime="1998">1998</time> •
<address>
<a href="https://www.iufm-douai.fr/" target="_blank">IUFM Douais</a>
</address>
</li>
</ul>
</section>
</main>
<footer>
<hr>
<p>© 2025 <strong>Vincent Vanneste</strong>. Tous droits réservés. | <a href="#haut">Haut de page</a></p>
</footer>
</body>
</html>
<ul>
+<li>
→ listes non ordonnées (menus, inventaires).<ol>
+<li>
→ listes ordonnées (numérotées, étapes).<dl>
+<dt>
+<dd>
→ listes de définitions (terme : valeur).Dans ce portfolio, on utilise :
une liste pour le menu de navigation,
une liste pour les compétences,
une liste pour les expériences et formations,
et une liste de définitions pour des infos contact.
Méthode : projets.html
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Portfolio - Projets</title>
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/projets.css">
</head>
<body>
<header id="haut">
<a href="images/photo.jpg">Lien vers ma photo</a>
<h1>Portfolio de Vincent Vanneste</h1>
<nav>
<ul>
<li><a href="index.html">Accueil</a></li>
<li><a href="projets.html">Projets</a></li>
<li><a href="https://www.univ-littoral.fr/" target="_blank">ULCO</a></li>
</ul>
</nav>
<hr>
</header>
<main>
<h1>Mes projets</h1>
<section>
<h2 id="liste-projets">Liste des projets</h2>
<div class="projets">
<article>
<h3><a href="projet1.html">Projet 1</a></h3>
<p>Un projet qui présente les bases du HTML et de la mise en page.</p>
</article>
<article>
<h3><a href="projet2.html">Projet 2</a></h3>
<p>Un site en CSS avec une mise en forme responsive adaptée aux mobiles.</p>
</article>
<article>
<h3><a href="projet3.html">Projet 3</a></h3>
<p>Un mini-site en JavaScript avec des interactions simples.</p>
</article>
<article>
<h3><a href="projet4.html">Projet 4</a></h3>
<p>Une application web utilisant PHP et MySQL pour gérer des données.</p>
</article>
<article>
<h3><a href="projet5.html">Projet 5</a></h3>
<p>Un projet complet combinant HTML, CSS, JS et base de données.</p>
</article>
</div>
</section>
</main>
<footer>
<hr>
<p>© 2025 <strong>Vincent Vanneste</strong>. Tous droits réservés. | <a href="#haut">Haut de page</a></p>
</footer>
</body>
</html>
Méthode : css/style.css
/* Corps de la page */
body {
font-family: Arial, sans-serif;
/* police principale du site */
color: #333333;
/* couleur du texte principal (gris foncé) */
background-color: #ffffff;
/* couleur de fond du site (blanc) */
}
/* Conteneur principal du header */
header {
text-align: center;
/* centre tout le contenu du header */
padding: 20px;
/* ajoute de l’espace intérieur */
background: #f0f0f0;
/* fond gris clair pour distinguer le header */
border-bottom: 2px solid #ddd;
/* ajoute une ligne en bas du header */
}
/* Lien vers la photo */
header a[href*="photo"] {
display: block;
/* force le lien à prendre toute une ligne */
margin-bottom: 10px;
/* espace sous le lien */
color: #0066cc;
/* couleur bleue pour le lien */
text-decoration: none;
/* supprime le soulignement */
font-style: italic;
/* style italique pour différencier ce lien */
}
header a[href*="photo"]:hover {
text-decoration: underline;
/* souligne quand on passe la souris */
}
/* Titre principal */
header h1 {
margin: 10px 0;
/* espace au-dessus et en dessous du titre */
font-size: 2rem;
/* grande taille de police */
color: #333;
/* texte gris foncé */
}
/* Navigation */
header nav {
margin-top: 10px;
/* espace au-dessus du menu */
}
header nav ul {
list-style: none;
/* supprime les puces de la liste */
padding: 0;
/* supprime le retrait intérieur */
margin: 0;
/* supprime le retrait extérieur */
}
header nav li {
display: inline-block;
/* affiche les éléments du menu côte à côte */
margin: 0 15px;
/* espace horizontal entre les liens */
}
header nav a {
text-decoration: none;
/* supprime le soulignement */
color: #0066cc;
/* bleu pour les liens du menu */
font-weight: bold;
/* met les liens en gras */
}
header nav a:hover {
text-decoration: underline;
/* souligne au survol */
}
/* Ligne de séparation */
header hr {
border: 0;
/* supprime le style par défaut */
border-top: 1px solid #ccc;
/* ajoute une ligne grise */
margin-top: 20px;
/* espace au-dessus de la ligne */
}
main nav a:hover {
color: #0056b3;
/* couleur des liens internes au survol (bleu foncé) */
}
/* Titres des sections */
section h2 {
color: #1e3a5f;
/* couleur des titres principaux des sections (bleu foncé) */
font-size: 1.5em;
/* taille du titre de section */
}
section h3 {
color: #004080;
/* couleur des sous-titres (bleu plus profond) */
font-size: 1.2em;
/* taille des sous-titres */
}
/* Paragraphes dans les sections */
section p {
color: #333333;
/* couleur du texte des paragraphes (gris foncé) */
font-family: Georgia, serif;
/* police plus classique pour le texte des sections */
}
/* Liens dans les sections */
section a {
color: #1e90ff;
/* couleur des liens dans le contenu (bleu clair) */
text-decoration: underline;
/* ajout d’un soulignement pour distinguer les liens */
}
section a:hover {
color: #0056b3;
/* couleur des liens au survol (bleu foncé) pour contraste */
}
/* Footer */
footer {
background-color: #1e3a5f;
/* fond bleu foncé pour le footer */
color: #ffffff;
/* texte blanc dans le footer */
}
footer a {
color: #ff8c42;
/* liens du footer en orange doux */
text-decoration: none;
/* suppression du soulignement des liens */
}
footer a:hover {
color: #ffcc00;
/* couleur des liens au survol (jaune vif) */
}
Méthode : css/accueil.css
/* Mise en forme générale du contenu principal */
main {
max-width: 900px;
/* limite la largeur pour améliorer la lisibilité */
margin: 0 auto;
/* centre le main sur la page */
padding: 20px;
/* espace intérieur autour du contenu */
background: #ffffff;
/* fond blanc (utile si la page a une couleur différente) */
color: #333;
/* couleur de texte gris foncé, plus doux que le noir pur */
}
/* Navigation interne */
main nav {
text-align: center;
/* centre le menu de navigation */
margin-bottom: 20px;
/* espace sous la barre de navigation */
}
main nav ul {
list-style: none;
/* supprime les puces de la liste */
padding: 0;
/* supprime le retrait intérieur */
margin: 0;
/* supprime le retrait extérieur */
}
main nav li {
display: inline-block;
/* affiche les éléments de menu côte à côte */
margin: 0 10px;
/* espace horizontal entre les liens */
}
main nav a {
text-decoration: none;
/* supprime le soulignement par défaut */
color: #0066cc;
/* couleur bleue pour les liens */
font-weight: bold;
/* met les liens du menu en gras */
}
main nav a:hover {
text-decoration: underline;
/* souligne au survol pour l’accessibilité */
}
/* Titres des sections */
main h2 {
font-size: 1.5rem;
/* taille de police intermédiaire */
margin-top: 30px;
/* espace au-dessus des titres */
margin-bottom: 10px;
/* espace sous le titre */
border-bottom: 2px solid #ddd;
/* ligne grise sous le titre */
padding-bottom: 5px;
/* espace entre le texte et la ligne */
}
/* Paragraphes */
main p {
line-height: 1.5;
/* augmente l’espacement entre les lignes */
margin-bottom: 15px;
/* espace sous chaque paragraphe */
}
/* Listes dans les sections */
main section ul {
padding-left: 20px;
/* ajoute un retrait pour les listes */
margin-bottom: 20px;
/* espace sous la liste */
}
main section li {
margin-bottom: 10px;
/* espace entre les éléments de liste */
}
/* Balises <address> utilisées pour lieux/sites */
address {
font-style: normal;
/* supprime l’italique par défaut */
display: inline;
/* reste sur la même ligne que le texte */
}
/* Liens dans le contenu (hors navigation) */
main section a {
color: #0066cc;
/* même bleu que les liens du menu */
text-decoration: none;
/* pas de soulignement par défaut */
}
main section a:hover {
text-decoration: underline;
/* souligne au survol */
}
/* Séparateurs horizontaux */
hr {
border: 0;
/* supprime la bordure par défaut */
border-top: 1px solid #ddd;
/* ajoute une ligne fine grise */
margin: 30px 0;
/* espace autour de la ligne */
}
Méthode : css/projets.css
.projets {
text-align: center;
/* centre les articles à l'intérieur du conteneur */
}
.projets article {
display: inline-block;
/* affiche les articles les uns à côté des autres (comme du texte) */
vertical-align: top;
/* aligne le haut des articles entre eux */
width: 220px;
/* largeur fixe pour chaque carte */
margin: 10px;
/* espace extérieur autour de chaque carte */
padding: 10px;
/* espace intérieur entre le bord et le contenu */
background: #f9f9f9;
/* couleur de fond gris très clair */
border: 1px solid #ddd;
/* bordure fine et grise autour des cartes */
border-radius: 8px;
/* arrondit légèrement les coins de la carte */
text-align: left;
/* le texte à l’intérieur est aligné à gauche */
}
.projets h3 {
margin-top: 0;
/* supprime l’espace au-dessus du titre */
font-size: 1.1rem;
/* définit la taille du titre en unités relatives */
}
.projets a {
text-decoration: none;
/* enlève le soulignement par défaut des liens */
color: #0066cc;
/* applique une couleur bleue au lien */
font-weight: bold;
/* met le lien en gras */
}
.projets a:hover {
text-decoration: underline;
/* remet le soulignement quand on survole le lien */
}
.projets p {
font-size: 0.9rem;
/* définit une taille de texte légèrement plus petite */
color: #333;
/* applique une couleur gris foncé au texte */
}
Exemple :
See the Pen Séance 4-accueil by Vincent-Vanneste (@vincent-vanneste) on CodePen.
Exemple :
See the Pen Séance 4-projets by Vincent-Vanneste (@vincent-vanneste) on CodePen.