Programmation IHM : HTML, CSS, Bootstrap
Programmation IHM : HTML, CSS, Bootstrap
Fabien Duchateau
2021 - 2022
[Link]
Positionnement dans LIFIHM
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 3 / 72
Rappels HTML
I Langage de balisage :
I structure (e.g., <header>, <nav>)
I contenu (e.g., <p>, <a>, <img>, <table>)
[Link]
[Link]
Tutoriel OpenClassRooms sur HTML5 et CSS3
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 4 / 72
Rappels HTML (2)
1 <!DOCTYPE html>
2 <html lang="fr">
3
4 <head>
5 <title >Page "hello world" </title >
6 <meta charset= "utf-8">
7 </head >
8
9 <b ody>
10 <head er>
11 <h1 >Exemple "hello world"</h1>
12 </head er>
13 <s ection>
14 <p >Hello world !</p>
15 </s ection >
16 <footer >
17 <a href="[Link]/wiki/Hello_world"
>Source </a>
18 </footer >
19 </b ody>
20
21 </html >
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 6 / 72
Rappels CSS
[Link]
[Link]
[Link]
[Link]
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 7 / 72
Rappels CSS (2)
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 8 / 72
Rappels CSS (3)
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 9 / 72
Rappels CSS (3)
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 10 / 72
Rappels CSS (4)
1 header {
2 background-color: #aa88cc;
3 margin-bottom: 1em;
4 width: 20em;
5 border-radius: 0.5 em;
6 }
7
8 p {
9 text-indent: 2em;
10 word-spacing: 1em;
11 text-transform: capitalize;
12 }
13
14 footer {
15 background-color: #55 cc55;
16 width: 20em;
17 text-align: center;
18 }
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 11 / 72
Limitations de HTML et CSS
[Link]
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 13 / 72
Technologies pour le développement web
Interfaces :
I HTML et CSS, et des frameworks associés (e.g., Bootstrap,
Foundation, Pure, KNACSS, Gumby)
[Link]
[Link]
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 14 / 72
Outils pour le développement web
Éditeurs de texte (non exhaustif, multi-OS et open-source) :
I Atom ([Link]
I Bluefish ([Link]
I Brackets ([Link]
I Emacs ([Link]
I jedit ([Link]
[Link]
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 15 / 72
Objectifs du cours
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 16 / 72
Plan
Présentation de Bootstrap
Système de grille
Styles pré-définis
Composants supplémentaires
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Généralités
[Link]
[Link]
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 18 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Installation de Bootstrap
Présentation de Bootstrap
Système de grille
Styles pré-définis
Composants supplémentaires
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 21 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Comportement de la grille :
I Contenus d’abord réduits (en largeur) puis empilés (les uns
sous les autres) au fur et à mesure que le dispositif rétrécit
I Possibilité de cacher des contenus quand le dispositif rétrécit
I Comportement inverse quand le dispositif s’élargit
Ce sont des classes CSS qui transforment des balises (e.g., div,
span, article) en container, row et colonnes
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 22 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Containers
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 24 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Rangées
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 25 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Colonnes
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 26 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Colonnes (2)
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 27 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Exemple de grille
2 <div class="row">
3 <div class="col-4 bg-success">div 4 colonnes </div >
4 <div class="col-6 bg-warning">div 6 colonnes </div >
5 <div class="col-2 bg-info">div 2 colonnes </div >
6 </div >
7 <div class="row">
8 <div class="col-3 bg-danger">div 3 colonnes </div>
9 <div class="col-2 bg-info">div 2 colonnes </div >
10 <div class="col-5 bg-success">div 5 colonnes </div >
11 </div >
Deux rangées dont les éléments (colorés avec les classes .bg-*)
occupent un certain nombre de colonnes en xs
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 28 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Enroulement de colonnes
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 29 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Réorganisation de colonnes
Par défaut, les colonnes sont affichées dans l’ordre du flux, mais
réorganisation possible avec les classes :
I .offset-*-x pour déplacer un élément à droite de x colonnes
(≈ marge à gauche)
I .order-*-x pour réordonner visuellement en indiquant la
position de la colonne (avec x variant de 1 à 12)
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 30 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Imbrication d’éléments
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 31 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
En résumé
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 32 / 72
Plan
Présentation de Bootstrap
Système de grille
Styles pré-définis
Composants supplémentaires
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Conseils :
I Éviter d’utiliser des marges en haut (margin-top), dont le
comportement est parfois imprévisible
I Privilégier l’unité rem (root em)
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 34 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
I Fond blanc
I …
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 35 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
[Link]
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 36 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 37 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 38 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
I .text-wrap ou .text-nowrap
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 39 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
I .close pour une petite croix fermante (e.g., sur les panels),
mais besoin d’associer un événement
[Link]
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 40 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Images (<img>)
I .img-fluid garantit que l’image s’adapte et ne déborde pas
de son parent
I .rounded (coins arrondis), .img-thumbnail (aperçu)
I Alignement d’une image avec .text-center, .text-end, …
dans le conteneur parent
[Link]
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 41 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Liens et boutons
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 42 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 43 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Une liste sans style (gauche), une liste en ligne (milieu) et une
description (droite)
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 44 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Tableaux (<table>)
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 45 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Tableaux (2)
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 46 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Tableaux - tutoriel
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 47 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Formulaires (<form>)
3 <form>
4 <fieldset class="form-group">
5 <label for="input1">Un premier label </label >
6 <i nput type="text" class="form-control" id="input1" placeholder= "un exemple
de valeur">
7 </fieldset >
8 <fieldset class="form-group">
9 <label for="input2">Un autre label </label >
10 <i nput type="text" class="form-control" id="input2" placeholder= "une autre
exemple">
11 </fieldset >
12 </form >
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 48 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Formulaires (2)
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 49 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
En résumé
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 50 / 72
Plan
Présentation de Bootstrap
Système de grille
Styles pré-définis
Composants supplémentaires
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Composants Bootstrap
[Link]
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 52 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Panels (card)
I .card-header et .card-footer
I .card-img-top et .card-img-bottom
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 53 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
http ://[Link]/planete/zoologie-science-decalee-62252
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 54 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
http ://[Link]/planete/zoologie-science-decalee-62252
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 54 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Alertes (alert)
Une alerte fournit des messages contextuels ”inline” à
l’utilisatrice :
I .alert pour les bordures et marges
I .alert-primary, .alert-info, .alert-warning,
.alert-success, .alert-danger, etc.
I .alert-link pour des liens colorés selon le type d’alerte
I .alert-heading pour un titre, <hr> pour un séparateur
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 55 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 56 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Une fenêtre modale est une fenêtre bloquante (au premier plan) :
I Généralement une balise <div> avec la classe .modal
I Les modales de Bootstrap se ferment automatiquement quand
on clique en dehors de la fenêtre modale
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 57 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 58 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 59 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 59 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Menus (nav)
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 60 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Options :
I Position (.fixed-top, .sticky-top, etc.)
I Couleur (.navbar-dark, .navbar-light, etc.)
I Responsive (avec .navbar-toggler et collapse)
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 61 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 62 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
2 <ol class="breadcrumb">
3 <li class="breadcrumb-item"><a href="#"
>Accueil </a></li>
4 <li class="breadcrumb-item"><a href="#"
>Articles magiques </a></li>
5 <li class="breadcrumb-item active">Parchemins
</li>
6 </ol>
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 63 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Étiquettes (badge)
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 64 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Infobulle (tooltip)
3 <s cript>
4 /* code JS pour initialiser tous les tooltips sur la page */
5 var tooltipElementList = []. [Link]( [Link] ('[data-bs-toggle="
tooltip "]'));
6 var tooltipList = [Link] ( function (tooltipElem) {
7 return new [Link] (tooltipElem);
8 });
9 </s cript>
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 65 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 66 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 67 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Repli (collapse)
Un repli permet de masquer/afficher du contenu sur demande :
I Un élément déclencheur (e.g., un bouton) possède :
I un attribut data-bs-toggle="collapse"
I un attribut data-bs-target valué à un sélecteur CSS
I Un élément repliable (e.g., un panel) possède :
I la classe .collapse
I en option, la classe .show (déplié initialement)
24 <a data-bs-toggle= "collapse" href="#collapseDiv1">Lien déclencheur </a>
25 <div class="collapse bg-success" id="collapseDiv1">
26 Voilà le contenu replié et repliable pour le lien !
27 </div >
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 68 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
Repli (collapse)
Un repli permet de masquer/afficher du contenu sur demande :
I Un élément déclencheur (e.g., un bouton) possède :
I un attribut data-bs-toggle="collapse"
I un attribut data-bs-target valué à un sélecteur CSS
I Un élément repliable (e.g., un panel) possède :
I la classe .collapse
I en option, la classe .show (déplié initialement)
24 <a data-bs-toggle= "collapse" href="#collapseDiv1">Lien déclencheur </a>
25 <div class="collapse bg-success" id="collapseDiv1">
26 Voilà le contenu replié et repliable pour le lien !
27 </div >
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 68 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
[Link]
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 69 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
I Jumbotron
I Barre de progression
I Pagination
I Carrousel d’images
I Scrollspy
I …
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 70 / 72
Présentation de Bootstrap Système de grille Styles pré-définis Composants supplémentaires
En résumé
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 71 / 72
Bilan
LIFIHM - Interactions Humain Machine // Programmation pour l’IHM - interfaces UCBL Lyon 1 72 / 72