Responsive Web Design

Remi Forax

RWD ?

“Responsive web design (RWD) is an approach to web design which makes web pages render well on a variety of devices and window or screen sizes.”

source: Wikipedia.org - RWD

RWD ?

“Le responsive web design (RWD) est une approche de la conception de sites web qui fait en sorte que les pages web soient affichées corectement sur une grande variété d'appareils et de tailles de fenêtre ou d'écran.”

source : Wikipedia.org - RWD

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 tweak le CSS pour qu'il s'adapte au desktop

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 Queriesjuin 2012
Media Queries level 4sept 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,
donc cela s'applique si la taille est supérieure (>=)
max-width indique la taille maximum,
donc cela s'applique si la taille est inférieure (<=)

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 fait 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 on le fait pas car le browser charge tous les fichiers avant d'appliquer le bon

Affichage sur mobile ?

Sur mobile on ne veut pas de scrollbar 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 une taille de 12 colonnes

mais le principe est le même.

d'autre façons de faire des grilles

qui permette surtout un meilleur alignement vertical

flexbox
mais marche 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