Travail pratique #3¶
Travail pratique à remettre
Ce travail pratique est à remettre et compte dans le cumul de la note finale du cours.
Pondération :
- Travail pratique : 5% session
Détails :
- Ce travail peut être fait en équipe de 2
- Bien lire les instructions
- Valider le code avec le validateur avant la remise
- La date limite de remise est disponible sur LÉA
- Deux périodes de laboratoire sont allouées pour ce travail
Objectif¶
L'objectif de ce TP est de pratiquer les composants principaux de Bootstrap, notamment les éléments suivants :
- les barres de navigation
- les carrousels
- les cartes et les superpositions
- les grilles
- l'affichage en flex
Projet¶
 Aucun projet n'est fourni ici, car la majorité des éléments seront pris dans la documentation de Bootstrap ou dans les notes de cours.
Il faut donc utiliser la documentation de Bootstrap ou les notes de cours pour :
- aller chercher la base des éléments demandés
- modifier et adapter pour obtenir l'affichage désiré
Important
- Les classes Bootstrap permettent de tout faire ce qui est demandé, sauf quelques exceptions
- Le seul CSS atorisé sera mentionné dans l'énoncé pour ces quelques exceptions
- Respecter la même structure de projet utilisée depuis le début de la session
- Les images sont la propriété de EBox et il est important de le mentionner dans le pied de page tel qu'indiqué dans les instructions
Nous allons nous inspirer et reproduire des parties d'un site existant à l'aide de Bootstrap.
- Site de référence : https://www.ebox.ca/quebec/affaires/
- 📢 Utiliser ce site pour copier les contenus textes et vous donner une idée du résultat attendu
- Le résultat final attendu est représenté au bas de l'énoncé dans la section "Page Finale" 
Résultat attendu :
On désire une reproduction la plus rapprochée possible du site de référence en utilisant Bootstrap.
Ce ne sera pas 100% identique
L'idée du TP est d'utiliser Bootstrap pour obtenir un résultat le plus similaire possible au site de référence.
Vous ne pourrez pas atteindre un site identique avec ce qui est demandé, mais vous vous en approcherez à 90%.
Attention
Je ne donne pas tous les détails des classes nécessaires pour arriver au résultat final...
Il faudra donc utiliser les classes de texte, de couleurs, de marges, de padding, pour obtenir le résultat demandé au-delà des grandes lignes fournies.
Quelques classes utiles :
- fs : les classes de font-size
- fw : les classes de font-weight
- text-uppercase : affichage en majuscules
- p : les classes de padding
- m : les classes de margin
- border : les classes de bordures
Inclure Bootstrap¶
Dans votre squelette HTML, ajouter les appels à Bootstrap suivants aux bons endroits tel que vu à la semaine 8 :
- 
Bootstrap CSS <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
- 
Bootstrap script <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous"></script>
Images¶
Pour vous aider, j'ai téléchargé et modifié au besoin les images nécessaires au projet afin de vous faciliter la vie.
NAV¶
Le nav contient 2 barres de navigation.
On débute donc le HTML du nav comme suit :
<nav>
    <!--Première barre-->
    <div class="navbar ...">
        ...
    </div>
    <!--Deuxième barre-->
    <div class="navbar ...">
        ...
    </div>
</nav>
NOTE : Les liens peuvent mener nulle part dans votre page avec href="#".
Première barre de navigation :
- Toujours étendue sur une ligne peu importe la taille d'écran
- Éléments toujours à droite de la barre
- Fond foncé noir, texte blanc
- Padding sur les liens cliquables
- Bordure droite sur les deux liens du centre
Deuxième barre de navigation :
- La barre est en burger sur petits écrans, puis s'étend sur une ligne à partir d'écrans larges
- Au lieu d'un container fluid, c'est un container à partir d'écrans larges
- Le logo (ebox-logo.png) et le numéro de téléphone sont placés dans le bloc de marque de commerce
- Tous les autres éléments sont des items de navigation, incluant l'icône de connexion
- L'icône de connexion (circle-user-regular-full.svg) se place à droite de la barre sur écrans larges et plus (marge automatique)
Résultat :


CSS LOCAL AUTORISÉ POUR LE NAV
Voici le seul CSS local que vous avez besoin pour les barres de navigation :
- 
Créer une classe et lorsque la souris passe au-dessus de cette classe : appliquer un souligné Appliquer cette classe sur les liens cliquables des deux barres (elle sera aussi utilisée dans le footer) 
- 
Ajuster la taille du logo de connexion 
Tous les autres styles sont produits par Bootstrap
HEADER¶
Le header est le bloc le plus complexe du TP ! 💪
Allez-y graduellement, une diapositive à la fois.
- La première et la dernière diapositive se ressemblent beaucoup.
- La deuxième et la troisième diapositive se ressemblent beaucoup.
- 
Créer une classe dans votre CSS qui définit une hauteur (height) de 20rem. 
- 
Ajouter une requête média pour écrans de minimum 992px et dans la classe créée définir une hauteur de 30rem. Cette classe sera utilisée pour s'assurer que chaque diapositive du carrousel aient la même hauteur. 
- 
Dans le header, on insère un carrousel de 4 diapositives. 
- 
Le carrousel possède quatre indicateurs au bas 
- 
Le carrousel n'a pas de bouton précédent ou suivant 
- 
La première diapositive - contient une carte avec superposition de texte sur image
- l'image de fond est group.png
- le contenu superposé comporte un titre, un paragraphe et un bouton
- Appliquer la classe de hauteur créée dans votre CSS à la carte
 CSS local autorisé pour la première diapo 
 Tous les autres styles sont produits par Bootstrap- largeur du contenu superposé sur différentes tailles d'écran
- ajustement des tailles de polices sur petits écrans / grands écrans
- ajustement de la hauteur de l'image de fond (avec height à 100%)
  
- 
La deuxième diapositive contient une grille - La rangée centre les colonnes en largeur et en hauteur
- La première colonne utilise 5 fragments sur écrans médium et plus et contient : un titre et deux paragraphes
- La deuxième colonne utilise 4 fragments sur toutes tailles d'écrans et contient l'image trophee.png
- l'image est fluide
- Appliquer la classe de hauteur créée dans votre CSS à la rangée de la grille
 AUCUN CSS LOCAL SUPPLÉMENTAIRE, tous les styles sont produits pas Bootstrap  
- 
La troisième diapositive contient une grille - La rangée centre les colonnes en largeur et en hauteur
- Appliquer la classe de hauteur créée dans votre CSS à la rangée de la grille
- La première colonne utilise 3 fragments sur écrans médium et plus et contient : un titre et un bouton
- La deuxième colonne utilise 4 fragments sur toutes tailles d'écrans et contient l'image television.png
- l'image est fluide
 AUCUN CSS LOCAL SUPPLÉMENTAIRE, tous les styles sont produits pas Bootstrap  
- 
La quatrième diapositive - contient une carte avec superposition de texte sur image
- Appliquer la classe de hauteur créée dans votre CSS à la carte
- l'image de fond est bg-reseau-prive.jpg
- le contenu superposé comporte un titre, un paragraphe et un bouton et est centré en hauteur et en largeur
 CSS local autorisé pour la dernière diapo 
 Tous les autres styles sont produits par Bootstrap- ajustement des tailles de polices sur petits écrans / grands écrans
- ajustement de la hauteur de l'image de fond (avec height à 100%)
  
MAIN¶
Le main contient 2 blocs :
- une grille de 3 cartes
- une carte avec superposition

Grille de cartes
- la grille applique des "gutters" (gouttières = espace) de niveau 2
- chaque colonne prend 4 fragment à partir d'écran médium
- chaque colonne contient une carte
- chaque carte contient une image dont la taille est ajustée à 25%, centrée
- Les images sont cachées sur petit écran, puis affichées sur écrans moyens et plus
- chaque carte contient un corps (card-body)
- dans le corps des cartes, il y a un titre et un bouton
- un ombrage est appliqué sur chaque carte
✳ Section Page Finale plus bas montre le résultat final.
Carte large avec superposition
- L'image de fond de la carte est triangle_rouge.png
- le bloc superposé sur l'image contient une grille
- 
la première colonne a 3 fragments sur écrans médium et plus - la colonne contient l'image devices.png
- l'image est fluide
- l'image est cachée sur mobile et apparaît sur écrans médium et plus
 
- 
la deuxième colonne a 5 fragments sur écrans médium et plus - la colonne affiche le texte centré par défaut, puis affiche le texte à gauche sur écrans médium et plus
- la colonne contient un titre, un paragraphe et un bouton
 
- 
la rangée de la grille positionne les 2 colonnes centrées dans la rangée (pour information, la classe row est automatiquement flex...) 
CSS LOCAL AUTORISÉ POUR LE MAIN
Le CSS local nécessaire est le suivant :
- 
Sur les cartes de la grille, lorsque la souris passe au-dessus d'une carte, modifier les couleurs  
- 
Sur l'image de fond de la carte large avec superposition, appliquer une hauteur minimale de 25rem Sur mobile, elle a donc l'apparence suivante :  
FOOTER¶
Le footer est un container fluid.
Dans le footer, il y a un container pour limiter la largeur du contenu.
Dans le container, on retrouve 3 blocs :
- 1 paragraphe avec bordure bas, padding en Y, sans marges
- 
1 div en flex avec bordure bas et padding en Y - contient 5 liens cliquables
- appliquer la classe créée dans le header pour afficher un souligné sur les liens cliquables lors du survol
- un div positionnée à droite contient les 3 images
- le flex affiche en colonne par défaut, puis sur une ligne sur écrans médium et plus
 
- 
une div en flex avec padding du haut - contient 2 paragraphes de droits d'auteur très important ! 
- le flex affiche en colonne par défaut puis sur une ligne sur écrans médium et plus
 
- contient 2 paragraphes de droits d'auteur 
AUCUN NOUVEAU CSS LOCAL POUR LE FOOTER


Page Finale¶
Sur petits écrans :

Sur grands écrans :

Validation¶
Ne pas oublier de valider le code HTML et CSS à l'aide du validateur :
https://validator.w3.org/#validate_by_input
Barème de correction¶
 Bootstrap 5.3.8 exigé !
Faites attention aux ressources en ligne qui utilisent souvent des vieilles versions de Bootstrap!
| Élément | Points | 
|---|---|
| Nav | 3pts | 
| Carrousel | 5pts | 
| Grille de cartes | 3pts | 
| Carte avec overlay | 2pts | 
| Footer | 2pts | 
| Aucun CSS personnalisé autre que celui autorisé | 1pt | 
| Apparence le plus similaire possible à l'exemple donné | 1pt | 
| Règles de programmation (présentation du code, commentaires, versions) | 2pts | 
| Aucune erreur dans le code | 1pt | 
| TOTAL | 20pts | 
Compte pour 5% de la session.
Remise¶
- Ne pas oublier d'indiquer les deux noms des coéquipiers dans la balise d'auteur dans le <head>
- Faire un dossier compressé de tout le projet
- Remettre sur LÉA