Aller au contenu principal

Séminaire

Objectifs

  • Connaître la syntaxe du langage CSS.
  • Ajouter du style CSS à une page HTML.
  • Utiliser les outils de développement pour inspecter et modifier le style d'une page web.

Rendu

Mise en place

  • Cloner le dépôt GitHub Classroom de cette semaine à côté de celui des semaines précédentes.
    • git clone {url_du_depot} depuis le répertoire du cours.
    • inf5/
      ├── sem01-environment-{pseudo}/
      ├── sem02-html-{pseudo}/
      └── sem03-css-{pseudo}/
  • Ouvrir le dossier du dépôt dans Visual Studio Code.
    • Avec le terminal : code {dossier_du_depot}
    • Avec Visual Studio Code : Fichier > Ouvrir dossier > sélectionner le dossier du dépôt
  • Créer un fichier .gitignore à la racine du dépôt avec le contenu suivant :
./.gitignore
# macOS
.DS_Store

# Node.js
node_modules/

Estimation

  • Créer un ficher report.md dans le dossier du dépôt.
  • Estimer le temps nécessaire pour réaliser ce travail dans le rapport.
    • Découper le travail en tâches pour faciliter l'estimation.
  • Une fois terminé, comparer le temps estimé avec le temps réellement passé.
  • Le but n'est pas d'estimer correctement, mais de comprendre comment améliorer ses estimations.
TâcheTemps estiméTemps passéCommentaire
Estimation10m15m...
............
Total2h1h30...

Tutoriel

Suivre les tutoriels suivants pour se familiariser avec CSS (utiliser CodePen ou Visual Studio Code) :

Aventure stylisée

Le but est de reprendre le site HTML créé lors du séminaire précédent et de lui appliquer du CSS pour le styliser. Voici les étapes à suivre :

  • Copier les fichiers html du dossier sem02-html-{pseudo}/ dans le dossier sem03-css-{pseudo}/.
  • Créer un fichier main.css à la racine du dépôt avec le contenu suivant :
    ./main.css
    body {
    background-color: #fdf6e3;
    color: #657b83;
    }
    p {
    font-size: 20px;
    }
  • Reformater le code si nécessaire.
  • Appliquer le style à tous les fichiers HTML en ajoutant <link rel="stylesheet" href="main.css" /> dans le head de chaque fichier HTML :
    <!doctype html>
    <html lang="fr">
    <head>
    ...
    <link rel="stylesheet" href="main.css" />
    </head>
    <body>
    ...
    </body>
    </html>
  • Observer le changement de style sur toutes les pages.
  • Changer le fichier main.css pour appliquer les modifications suivantes :
    • Couleur de fond : #eee8d5 (beige)
    • Couleur des titres : #268bd2 (bleu)
    • Couleur des liens : #dc322f (rouge)
    • Couleur des liens au survol (lorsqu'on passe la souris dessus) : #6c71c4 (violet)
    • Enlever le soulignement des liens.
    • Changer la police de caractères de toute la page en monospace.
  • Créer un commit nommé Ajouter le style de base avec les changements.
  • Modifier le fichier main.css pour personnaliser le style de son jeu.
  • Créer un commit nommé Ajouter un style personnalisé avec les changements.
Astuce

Visual Studio Code propose l'autocomplétion (Ctrl + Espace) des propriétés CSS. Commencer par taper le nom de la propriété et regarder les suggestions proposées.

Source : https://code.visualstudio.com/docs/languages/css

Voici d'autres améliorations possibles à apporter au style de son jeu :

Police d'écriture

Utiliser une police d'écriture personnalisée externe.

  • Choisir une police sur Bunny Fonts.
  • Une fois la police choisie :
    • Cliquer sur la police choisie pour accéder à sa page.
    • Cliquer sur le bouton "Add variant" pour sélectionner la police.
    • Cliquer sur le bouton "Fonts +" en haut à droite.
  • Copier le code qui ressemble à @import url(https://fonts.bunny.net/css?family=inconsolata:500); au tout début du fichier main.css.
  • Copier l'attribut font-family depuis le site dans la règle body dans le fichier main.css. Par exemple, pour la police Inconsolata :
    @import url(https://fonts.bunny.net/css?family=inconsolata:500);
    body {
    font-family: 'Inconsolata', monospace;
    ...
    }
  • Utiliser une police différente entre les titres et le reste du texte.

Images de fond

Utiliser la propriété CSS background-image pour ajouter une image de fond à toutes les pages (pour une seule page, voir les sélecteurs de classe par la suite) :

body {
background-image: url("images/fond.jpg");
}

Le code ci-dessus ajoute une image de fond à télécharger au préalable qui se trouve dans le dossier images.

Utiliser background-size et/ou background-repeat pour ajuster l'affichage de l'image de fond.

Sélecteurs de classe

Pour ajouter un style à un élément spécifique (pas lié à une balise), on peut utiliser des classes. En voici deux exemples d'utilisation :

Liens particuliers

Pour appliquer un style spécifique à un lien (par exemple, le lien pour recommencer le jeu) :

  • Choisir un nom de classe significatif (p. ex. recommencer pour un lien qui permet de recommencer le jeu).
  • Ajouter l'attribut class à la balise HTML correspondante. Par exemple, pour un lien <a> :
    <a class="recommencer" href="index.html">Recommencer le jeu</a>
  • Dans le fichier main.css, ajouter une règle CSS pour la classe en utilisant le sélecteur . suivi du nom de la classe. Par exemple, pour la classe recommencer :
    .recommencer {
    color: #859900;
    }

Image de fond spécifique

Pour avoir une image de fond seulement pour une page spécifique :

  • Dans le fichier HTML, ajouter une classe au body (p. ex. carte) :
    <body class="carte">
    ...
    </body>
  • Dans le fichier main.css, ajouter une règle CSS pour la classe carte :
    .carte {
    background-image: url("images/carte-fond.jpg");
    }

Div

Ajouter des balises <div> pour regrouper des éléments et leur appliquer un style spécifique. Par exemple, pour regrouper les titres et les paragraphes d'une page :

<div class="contenu">
<h1>Titre de la page</h1>
<p>Paragraphe de la page.</p>
</div>
./main.css
.contenu {
background-color: red;
}

Voici un exemple de style pour une page du jeu : https://web.blueur.com/aventure-bootstrap/aventure.html

Autres propositions d'améliorations

  • Utiliser la propriété CSS text-align pour aligner le texte à gauche, au centre ou à droite.
  • Utiliser la propriété CSS margin et padding pour ajuster les espaces autour des éléments.
  • Utiliser la propriété CSS border pour ajouter des bordures aux éléments.
  • Utiliser la propriété CSS box-shadow pour ajouter des ombres aux éléments.
  • Centrer des éléments en CSS.

Rapport

  • Expliquer brièvement les principales difficultés rencontrées et comment les résoudre.
  • Compléter les estimations.
Git

Ne pas oublier de pousser tous les commits sur le dépôt Git distant (et de vérifier sur GitHub).

Hébergement

  • Créer un fichier vide .nojekyll à la racine du dépôt.
  • Publier le site sur GitHub Pages.
  • Ajouter le lien du site dans le rapport.

Validation

Vérifier la syntaxe des fichiers HTML et CSS avec les outils de validation en ligne :

Test

Créer un fichier test.js à la racine du dépôt avec le contenu suivant :

test.js
import test from "node:test";
import assert from "node:assert/strict";
import fs from "node:fs";
import { execSync } from "child_process";

test("présence des fichiers et dossiers", () => {
// Liste des chemins attendus dans le projet.
const expectedPaths = [
".git",
".gitignore",
".nojekyll",
"index.html",
"main.css",
"report.md",
"test.js",
];
// Vérifie que chaque chemin existe dans le projet.
expectedPaths.forEach((path) => {
assert.ok(
fs.existsSync(path),
`Le fichier ou dossier ${path} doit exister.`,
);
});
});

test("validation des fichiers html", () => {
// Exécute la validation HTML en utilisant https://html-validate.org/
try {
const output = execSync(
"npx -y html-validate -p=recommended,prettier **/*.html",
).toString();
console.log(output);
} catch (error) {
assert.fail(error.output);
}
});

test("validation des fichiers css", (t) => {
// Exécute la validation CSS en utilisant https://github.com/CSSLint/csslint
try {
const output = execSync("npx -y csslint .").toString();
console.log(output);
} catch (error) {
assert.fail(error.output);
}
});

Vérifier que les tests passent avec la commande node --test et corriger le code si cela n'est pas le cas.

Pour exécuter la validation CSS manuellement en ligne de commande :

npx -y csslint .

Outils de développement

  • Ouvrir les outils de développement.
  • Utiliser les outils de développement pour :
    • Observer les styles appliqués à un élément
      • Clic-droit sur un élément > Inspecter > Sous-onglet Styles
    • Modifier le style d'un élément :
      • Clic-droit sur un élément > Inspecter > Changer la couleur de fond en rouge par exemple.
      • Comment réagit la page ? Le changement est-il permanent ?

Bonus

Exercices supplémentaires

Références