Architecture(s) et
application(s) Web

CSC4101 - Expérience utilisateur Web

04/09/2024

Plan de la séquence

Objectifs de cette séquence (1h) :

  1. Interface utilisateur
  2. Interfaces Web
  3. Habillage des pages Web
  4. Programmation des interfaces
  5. Conception blocs Twig et CSS - Bootstrap

Interface homme-machine (IHM)

TPL.jpg
Figure 1 : Boutons Tournés Poussés Lumineux

Interface utilisateur

screenshot-bash.png
Figure 2 : Ligne de commande bash

Propriétés de la ligne de commande

Command-Line Interface (CLI) :

  • Codifiée
  • Stricte
  • Statique

Interface utilisateur

Apple_Macintosh_Desktop.png
Figure 3 : Desktop du Macintosh d’Apple

Propriétés des interfaces graphiques

Graphical User Interface (GUI) :

  • Métaphore (bureau)
  • Exploratoire

Interfaces de 0 à 77 ans

Vidéo https://www.youtube.com/watch?v=gc9NpYrbZgQ par UserExperiencesWorks

Propriétés des interfaces « naturelles »

Natural User Interface (NUI) :

  • Directe (passage de novice à expert facilement)
  • Naturelle / Intuitive

Importance des ordiphones (mobiles)

Plate-forme préférentielle (majorité des utilisateurs)

Utiliser technos Web pour applis mobiles :-)

</interface_utilisateur>

Plan de la séquence

Objectifs de cette séquence (1h) :

  1. Interface utilisateur
  2. Interfaces Web
  3. Habillage des pages Web
  4. Programmation des interfaces
  5. Conception blocs Twig et CSS - Bootstrap

Qualité des interfaces Web

Ce qu’il ne faut pas faire

CW NSFW : https://userinyerface.com/

Ergonomie

  • Expérience utilisateur (User eXperience : UX)
  • Utilisabilité :
    • apprenabilité (novices)
  • « Fléau » de l’abandon de panier
  • Utilisateurs « PIP » : Pressés, Ignorants et Paresseux

Portabilité

Le Web est la plate-forme universelle.

  • Standardisation = portabilité (merci HTML5)
  • Applications mobiles :
    • Développé en HTML
    • « Compilé » en toolkit natif (ex. Apache Cordova)
  • Attention : prédominence de Chrome de Google… Best viewed in Chrome

Accessibilité

Source : article Comment les aveugles utilisent-ils internet ? de l’Obs

Voir aussi Usage plage braille et synthèse vocale par personne non voyante de https://design.numerique.gouv.fr/.

Obligations

Principes WCAG 2.0

Principe 1 : perceptible

  • 1.1 Proposer des équivalents textuels à tout contenu non textuel qui pourra alors être présenté sous d’autres formes selon les besoins de l’utilisateur : grands caractères, braille, synthèse vocale, symboles ou langage simplifié.
  • 1.2 Proposer des versions de remplacement aux média temporels.
  • 1.3 Créer un contenu qui puisse être présenté de différentes manières sans perte d’information ni de structure (par exemple avec une mise en page simplifiée).
  • 1.4 Faciliter la perception visuelle et auditive du contenu par l’utilisateur, notamment en séparant le premier plan de l’arrière-plan.

Principe 2 : utilisable

  • 2.1 Rendre toutes les fonctionnalités accessibles au clavier.
  • 2.2 Laisser à l’utilisateur suffisamment de temps pour lire et utiliser le contenu.
  • 2.3 Ne pas concevoir de contenu susceptible de provoquer des crises.
  • 2.4 Fournir à l’utilisateur des éléments d’orientation pour naviguer, trouver le contenu et se situer dans le site.

Principe 3 : compréhensible

  • 3.1 Rendre le contenu textuel lisible et compréhensible.
  • 3.2 Faire en sorte que les pages apparaissent et fonctionnent de manière prévisible.
  • 3.3 Aider l’utilisateur à éviter et à corriger les erreurs de saisie.

Principe 4 : robuste

  • 4.1 Optimiser la compatibilité avec les agents utilisateurs actuels et futurs, y compris avec les technologies d’assistance.

etc.

La suite sur DesignGouv

Concevons des services publics numériques accessibles, inclusifs et humains.

https://design.numerique.gouv.fr/

Évaluation qualité

</qualite_interface>

</interfaces_web>

Plan de la séquence

Objectifs de cette séquence (1h) :

  1. Interface utilisateur
  2. Interfaces Web
  3. Habillage des pages Web
  4. Programmation des interfaces
  5. Conception blocs Twig et CSS - Bootstrap

Découplage structure / présentation

(suite)

Page Web et document HTML

Conversion de documents en une présentation dans le navigateur.

HTML + CSS

html-css.jpg

Structure des sources des pages

Une « page Web » :

  • un document HTML (maître)
  • plus des images, boutons, menus, etc. (éventuellement externes)

Un document (HTML) :

  • un arbre de rubriques,
  • sous-rubriques,
  • etc.









Arbre de balises HTML (DOM : Document Object Model)

Structure d’une page affichée

Une page affichée en 2D (ou imprimée) :

  • des boîtes qui contiennent d’autres boîtes
  • boîtes qui contiennent texte ou images, etc.
  • texte qui contient des caractères
  • caractère qui contiennent des pixels

Arbre DOM et rendu des pages

  • Le navigateur (moteur de rendu) convertit :

    • Arbre DOM : Document Object Model

    en :

    • Arbre d’éléments à afficher
  • Règles de conversion
    • Prédéfinies (navigateur)
    • Programmables (CSS)

Exemple de page avec un tableau

Logo du site

Accueil
Lien
Lien
Lien
Lien
Lien

Titre page

Une mise-en-page avec en-tête, barre de navigation et section de bas-de-page. Les lignes 1, 2 et 4 du tableau créent respectivement l'en-tête, la barre de navigation et le bas-de-page, et contiennent une seule cellule de tableau chacune.

La ligne 3 du tableau contient 3 cellules qui créent la colonne de menu (gauche), la colonne de contenu (milieu) et la collonne supplémentaire (droite).

 
Copyright ©

Structure HTML correspondante ?

<table>
  <tr> <!-- SECTION EN-TETE  -->
    <td colspan="3">
      <h3>Logo du site</h3>
    </td>
  </tr>
  <tr>  <!--  SECTION BARRE NAVIGATION == -->
    <td colspan="3">
      <a href="#">Accueil</a>
    </td>
  </tr>
  <tr> 
    <td width="20%"> <!--  COLONNE GAUCHE (MENU) == -->
      <a href="#">Lien</a><br>
      <a href="#">Lien</a><br>
    </td>
    <td width="55%"> <!--  COLONNE MILIEU (CONTENU) == -->
      <h4>Titre page</h4>
      Une mise-en-page avec en-tête, barre de navigation et section de
      ...
    </td>
    <td width="25%"</td>
  </tr>
  <tr>  <!--  SECTION PIED-DE-PAGE == -->
    <td colspan="3">Copyright ©</td>
  </tr>
</table>

Faire mieux !

  • Structurer la page en 6 sections, par exemple, avec des balises <div>
  • Positionner le contenu de chaque section avec des règles CSS.
  • Permet de faire évoluer la mise en page, par exemple sous forme linéaire et non plus tabulaire, etc.

Programmer en HTML et CSS

Structure archétypale d’une page

page-structure-site-design.jpg
Figure 4 : Structure classique de mise en forme d’une page Web

Source : http://webstyleguide.com/wsg3/6-page-structure/3-site-design.html (versions suivante : https://webstyleguide.com/6-page-structure.html )

.

Exemples : CSS Zen Garden

http://www.csszengarden.com/tr/francais/

RIP Molly Holzschlag

YB_mKc7__400x400.jpg

25/01/1963 - 05/09/2023

https://fr.wikipedia.org/wiki/Molly_Holzschlag

Design

Outils de Mockup :

  • Papier + crayon + gomme
  • Outils (penpot)
  • HTML + CSS (+ templates)

Guides de style

Inspiration / prêt à l’emploi

Marché :

Caractéristiques de HTML

HTML 5

  • Tout (ou presque) est possible en terme d’interface d’applications.
  • Y compris l’accès à des zones de graphisme libre et l’intégration des périphériques du téléphone/ordinateur

Les bons artistes copient, les grands artistes volent

Avantage d’HTML : le code source HTML dispo.

Vive le copier-coller :-)

Contenu adaptatif

  • Responsive design : prend en compte la taille de l’écran automatiquement
  • p. ex.: avec Bootstrap (voir plus loin)

Interactions dynamiques

  • Javascript
  • Interactions asynchrones

Interactions avec ordiphone mobile

  • Application allant plus loin que l’affichage et la saisie de texte : accès à toutes les fonctions du terminal mobile depuis le navigateur Web

Roadmap of Web Applications on Mobile du W3C (September 2020)

Principes de CSS

Cascading Style Sheets (Feuilles de style de Cascade)

Concevoir l’habillage des pages du site / application

Cascade

Modèle « objet » particulier

  • Langage déclaratif
  • Combinaison de plusieurs feuilles avec priorités
  • « Héritage » de propriétés des parents
  • Factorisation de motifs :

    DRYdon’t repeat yourself

Langage à base de règles

  • Si motif trouvé (sélecteur)
  • alors valeur donnée à attribut/propriété de mise en forme
css-rule.png

Exemple

h1 {
  font-size: 60px;
  text-align: center;
}

p,
li {
  font-size: 16px;
  line-height: 2;
  letter-spacing: 1px;
}

Niveaux croissants de proximité

Emplacement du code CSS :

  1. pas de style : affichage navigateur par défaut
  2. fichier CSS externe :

    <link rel="stylesheet" href="external.css"/>
    
  3. bloc style interne :

    <style type="text/css">
    .underline { text-decoration: underline; }
    </style>
    
  4. dans élément :

    <div class="column" style="float:left; width: 50%">
    
proximity.png
Figure 5 : Specificity ranking by proximity

Spécificité selon la proximité

Quelles règles s’appliquent, si plusieurs définies ?

proxexample.png
Figure 6 : Proximal specificity in action…

Spécificité du sélecteur

Ordre croissant de spécificité du sélecteur :

  1. par balise : div {style:valeur}
  2. par classe : .myclass {style:valeur}
  3. par identifiant : #myid {style:valeur}
selectoricity.png
Figure 7 : Specificity ranking by selector type

Outils du développeur

rules_view_ff_87.png
Figure 8 : Outil du développeur : règles CSS, dans Firefox

Source : Examiner et modifier le CSS sur MDN

Conception de CSS

  • Pas toujours simple
  • Abstraction
  • Frameworks CSS (et Javascript)

Couplage blocs templates Twig et CSS

</habillage_css>

Plan de la séquence

Objectifs de cette séquence (1h) :

  1. Interface utilisateur
  2. Interfaces Web
  3. Habillage des pages Web
  4. Programmation des interfaces
  5. Conception blocs Twig et CSS - Bootstrap

Conception des gabarits et CSS

Concevoir les gabarits des pages

Conception parallèle :

  • des blocs des gabarits HTML
  • des sections <div> qu’ils contiennent (identifiants ou classes)
  • des mises en forme

Même convention de nommage

Modèle de page souhaité

<html>
  <head>
  </head>
  <body>
    NAVIGATION

    MENU (COLONNE DE GAUCHE)

    CONTENU PRINCIPAL

    BAS DE PAGE
  </body>
</html>

Structure sémantique

<body>
  <div id="navigation">
    (NAVIGATION)
  </div>
  <div id="menu">
    (MENU RUBRIQUES)
  </div>
  <div id="main">
    (CONTENU PRINCIPAL)
  </div>
  <div id="footer">
    (BAS DE PAGE)
  </div>
</body>

Gabarit Twig

cours.org[*Org Src cours.org[ example ]*]
{% block body %}
<body>
   <div id="navigation">
   {% block navigation %}
   {% endblock %} {# navigation #}
   </div>
   <div id="menu">
   {% block menu %}
   {% endblock %} {# menu #}
   </div>
   <div id="main">
   {% block main %}
        <h1>{{ Message }}</h1>
   {% endblock %} {# main #}
   </div>
   <div id="footer">
   {% block footer %}
   {% endblock %} {# footer #}
   </div>
</body>
{% endblock %} {# body #}

Standardisation / Spécialisation

Spécialisation dans une sous-section ou une page de certains éléments de structure ou de présentation

  • héritage des gabarits : redéfinition du contenu de blocs

    {% block main %}
    ...
    {% endblock %}
    
  • cascade des feuilles de style CSS : redéfinition de la mise en forme

    #main { background-color: lightblue; }
    

</conception>

CSS avec Bootstrap

Utilisation d’un framework de présentation CSS

  • Standardisation du look
  • Adaptatif
  • Grille pour le positionnement graphique
  • Intégration avec Twig / Symfony

Bootstrap

bootstrap-stack.png

Framework CSS (+ JS)

http://getbootstrap.com/

Système de grille

Mise en page basée sur une grille de 12 colonnes

files_373001_374000_373714.png
Figure 9 : Grille de mise en page dans Bootstrap

Exemples

Thèmes

</bootstrap>

</technos_projet>

Take away

  • Structure != présentation
  • Rôle de CSS
  • Principe de surcharge des feuilles (cascade)
  • Accessibilité
  • Bootstrap

Récap

  • [X] HTTP (GET)
  • [X] PHP
  • [X] Doctrine
  • [X] Routeur Symfony
  • [X] HTML
  • [X] Twig
  • [X] CSS

Tout ce qu’il faut pour un joli site Web dynamique en lecture seule ;-)

Ensuite…

Générateur Contrôleur CRUD Symfony

Pour vos projets, mieux que make controller :

symfony console make:crud Todo

Génère code + gabarits :

created: src/Controller/TodoController.php
created: src/Form/TodoType.php
created: templates/todo/_delete_form.html.twig
created: templates/todo/_form.html.twig
created: templates/todo/index.html.twig
created: templates/todo/show.html.twig
created: templates/todo/new.html.twig
created: templates/todo/edit.html.twig

spoiler : formulaires, mais du temps gagné

Postface

Crédits illustrations et vidéos

Copyright

  • Document propriété de ses auteurs et de Télécom SudParis (sauf exceptions explicitement mentionnées).
  • Réservé à l’utilisation pour la formation initiale à Télécom SudParis.