Responsive Web Design

Raconté par Vincent Jugé
sur la base d'un cours créé par Rémi Forax

Responsive Web Design

Repose sur 3 idées :

  • Media Queries CSS ;
  • On place les éléments sur une grille fluide (grid) ;
  • Images flexibles en unités relatives (em ou %).

 

Devient une réalité suite au Google Mobilegeddon.

Autres termes

Mobile first
On développe le site web pour mobile et on tripatouille le CSS pour qu'il s'adapte aux écrans d'ordinateur.
Progressive enhancement
On affiche les données importantes d'abord, on charge progressivement avec des scripts supplémentaires pour offrir de l'interactivité.

CSS3 Media Queries

Media Queries juin 2012
Media Queries level 4 sept 2017

Sélecteur @media

Le sélecteur @media permet d'appliquer des règles CSS différentes en fonction par exemple de la taille de la zone d'affichage (viewport).


Type d'afficheurs

@media est suivi d'un type d'afficheur parmi

  1. all : tous types d'afficheurs (par défaut) ;
  2. screen : page affichée à l'écran ;
  3. print : page imprimée ;
  4. speech : page lue, pour les malvoyants.

min-width et max-width

min-width indique la taille minimum (min)  :
le sélecteur s'applique si la taille courante est ≥ min ;

max-width indique la taille maximum (max)  :
le sélecteur s'applique si la taille courante est ≤ max .

Composition de @media query

On utilise and pour appliquer plusieurs critères.
On utilise not pour inverser les critères.

Ou entre @media queries

Pour faire l'équivalent du ou,
on sépare les critères par des virgules.

Media Query en HTML

On peut indiquer le media dans la balise link
mais, en pratique, on le fait pas, car le browser chargerait tous les fichiers avant d'appliquer le bon.

Affichage sur mobile ?

Sur mobile on ne veut pas de barre de défilement horizontale, donc on fixe la largeur du viewport.

initial-scale est le facteur de zoom.

Grille fluide

Affichage sur mobile ?

On affiche chaque div avec une largeur de 100%.

Ne pas oublier de contrôler le viewport avec la balise meta !

HTML d'une grille simple

col-1 est une case qui prend une colonne,
col-2 est une case qui prend deux colonnes.

CSS d'une grille simple

Faire une grille simple

Dans chaque case de la grille,
on met un div qui contient le texte.

Avec une media-query

Une vraie grille

Souvent, les grilles ont 12 tailles de colonne…

mais le principe est le même.

D'autres façons de faire des grilles

qui permettent surtout un meilleur alignement vertical

flexbox
ne marche que sur un seul axe.  
grid
supporté seulement récemment sur macOS/iOS.

Textes et Images Flexibles

Texte Flexible

vw : pourcentage en fonction de la largeur du viewport.
vh : pourcentage en fonction de la hauteur du viewport.

Cela évite d'essayer de calculer la taille de la fonte en px, pt ou em.

Image Flexible

width agrandit/rétrécit l'image pour qu'elle tienne en largeur.
max-width rétrécit l'image pour qu'elle tienne en largeur.

Image Multi-Taille

La balise HTML5 picture accepte aussi les media-queries.