La grande majorité des sites actuels offrent une expérience utilisateur désastreuse sur un écran réduit : textes et menus de navigation minuscules, zoom obligatoire, débordements qui “cassent” le design, multi-colonnes non adaptées, contenus superflus, etc.
Cette présentation a pour objectif de proposer des solutions concrètes pour adapter rapidement un site web existant au média mobile à travers quelques exercices pratiques fondés sur les possibilités avancées du langage CSS en Responsive Web Design.
5. AVANT DE SE LANCER...
Analyser et comprendre le code existant
(template de CMS qui « laisse à désirer »)
Identifier les problèmes en amont
(largeurs, iframes, points de rupture)
Faire un choix de maquette et d'ergo
Faire un choix de navigation
Penser « Performance Web »
Penser « HD » et « Retina »
Analyser et comprendre le code existant
(template de CMS qui « laisse à désirer »)
Identifier les problèmes en amont
(largeurs, iframes, points de rupture)
Faire un choix de maquette et d'ergo
Faire un choix de navigation
Penser « Performance Web »
Penser « HD » et « Retina »
→ COMPTER 2 à 4 jours→ COMPTER 2 à 4 jours
6. AVANT DE SE LANCER...(bis)
Connaître le contexte mobile
(navigateurs, moteurs, spécificités)
Comprendre le Viewport
(device-width, pixel-ratio, viewport)
Maîtriser les CSS3 Media Queries
(et HTML / CSS en général)
Connaître le contexte mobile
(navigateurs, moteurs, spécificités)
Comprendre le Viewport
(device-width, pixel-ratio, viewport)
Maîtriser les CSS3 Media Queries
(et HTML / CSS en général)
→ COMPTER... pfiouu→ COMPTER... pfiouu
7. PENDANT
Produire du code pour écrans multiples
(tablettes, smartphones, écrans larges)
Produire des adaptations pour 2 orientations
Penser « tactile »
(positions et largeurs des zones tactiles)
Prendre en compte tous les gabarits
(home, page-type, formulaires, galeries, etc.)
Ajouter / développer du JavaScript dédié
Produire du code pour écrans multiples
(tablettes, smartphones, écrans larges)
Produire des adaptations pour 2 orientations
Penser « tactile »
(positions et largeurs des zones tactiles)
Prendre en compte tous les gabarits
(home, page-type, formulaires, galeries, etc.)
Ajouter / développer du JavaScript dédié
→ COMPTER... 3 à 6 jours→ COMPTER... 3 à 6 jours
8. ET APRES ? CORRIGER !
Bugs sur tableaux HTML, iframes, vidéos, etc.
Bugs CSS ou JS inexpliqués
(table-cell, flexbox, événements, touch)
Modifier le HTML si nécessaire
Problèmes de compatibilités
(anciens Android, Blackberry, etc.)
Bugs sur tableaux HTML, iframes, vidéos, etc.
Bugs CSS ou JS inexpliqués
(table-cell, flexbox, événements, touch)
Modifier le HTML si nécessaire
Problèmes de compatibilités
(anciens Android, Blackberry, etc.)
→ COMPTER... 1 à 3 jours→ COMPTER... 1 à 3 jours
17. La surface d'affichage
Les Media Queries CSS3
Box-sizing pour vous servir
Halte aux débordements
La surface d'affichage
Les Media Queries CSS3
Box-sizing pour vous servir
Halte aux débordements
NOTIONS INDISPENSABLES
31. VIEWPORT DANS LES SPECS
@viewport {
width: device-width;
zoom: 1;
}
Déjà reconnu par Opera, IE Mobile 10 et Firefox
mobile (ex. @-o-viewport)
Déjà reconnu par Opera, IE Mobile 10 et Firefox
mobile (ex. @-o-viewport)
32. Niveau de zoom :
320 / 320 = 1x
Niveau de zoom :
320 / 320 = 1x
<meta name="viewport" content="initial-scale=1.0">
35. <link rel="stylesheet" href="mobile.css"
media="screen and (max-width: 640px)" >
<link rel="stylesheet" href="styles.css" media="screen" >
Avec Media Queries :Avec Media Queries :
Sont ciblés : écrans dont la fenêtre
est inférieure ou égale à 640 pixels
Sont ciblés : écrans dont la fenêtre
est inférieure ou égale à 640 pixels
36. @media (max-width:640px) {
body { width: auto; }
}
Dans un fichier CSS :Dans un fichier CSS :
Ici : plein de styles CSS dédiés aux
petits écrans
Ici : plein de styles CSS dédiés aux
petits écrans
37. body { background-color: black; }
@media (max-width:640px) {
body { background-color: red; }
}
@media (max-width:640px) {
body { width: auto; }
}
Dans un fichier CSS :Dans un fichier CSS :
En pratique :En pratique :
38. Fenêtre de largeur supérieure à 640pxFenêtre de largeur supérieure à 640px Moins de 640pxMoins de 640px
RÉSULTAT
39. MEDIA QUERIES
width / height
largeur / hauteur de viewport
device-width / device-height
largeur / hauteur du device
orientation :
portrait ou landscape
etc.
width / height
largeur / hauteur de viewport
device-width / device-height
largeur / hauteur du device
orientation :
portrait ou landscape
etc.
99
59. ANALYSE DE L'EXISTANT
6 fichiers CSS différents
42 fois « font-size »
70 fois « !important »
30 fois « margin: 0 »
27 fois « padding: 0 »
23 fois « position »
30 fois « float »
12 fois « clear »
6 fichiers CSS différents
42 fois « font-size »
70 fois « !important »
30 fois « margin: 0 »
27 fois « padding: 0 »
23 fois « position »
30 fois « float »
12 fois « clear » OK, no stress !OK, no stress !
61. FEUILLE DE STYLES MOBILE
Appliquée seulement sur
écrans de largeur de
fenêtre au maximum de
960 pixels
Appliquée seulement sur
écrans de largeur de
fenêtre au maximum de
960 pixels
63. RETOUR À LA NORMALE
Pour les éléments
problématiques :
• width : auto
• height : auto
• float : none
• position : static
• padding : 0
• margin : 0
• etc.
73. TEMPS PASSÉ
Production effective de CSS = 6 heures
Compréhension de l'existant = 4 heures
Réflexions en amont, stratégie = 4 heures
Corrections bugs, anomalies = 1 heure
Production effective de CSS = 6 heures
Compréhension de l'existant = 4 heures
Réflexions en amont, stratégie = 4 heures
Corrections bugs, anomalies = 1 heure
→ TOTAL : 15 heures→ TOTAL : 15 heures
74. NON TRAITÉ
Seule la Homepage a été prise en compte
Ergonomie : le minimum vital a été fait pour
smartphones et tablettes
Aucune adaptation faite pour les différentes
orientations
Performances web : aucun effort n'a été fait dans ce
domaine
Écrans « HD » et « Retina » : aucune prise en compte
Seule la Homepage a été prise en compte
Ergonomie : le minimum vital a été fait pour
smartphones et tablettes
Aucune adaptation faite pour les différentes
orientations
Performances web : aucun effort n'a été fait dans ce
domaine
Écrans « HD » et « Retina » : aucune prise en compte
→ à « l'arrache »→ à « l'arrache »