Optimisation Mobile - Responsive Webdesign - 2013

Post on 27-Jan-2015

129 views 4 download

description

La mise à jour des cours donnés à l'université de Strasbourg sur l'optimisation mobile pour 2013

Transcript of Optimisation Mobile - Responsive Webdesign - 2013

http://dribbble.com/stephaniewalter

http://forrst.me/inpixelitrust/posts

@walterstephanie

http://www.inpixelitrust.fr/

Designer web et mobile, spécialisée en UI et UX.

Intégrateur web : HTML5, CSS 3, jQuery, WordPress

• Smartphone : appareil mobile « intelligent » ayant la capacité de se connecter au net, télécharger des apps, lire des mails, etc.

• OS : operating system• iOs : système d’exploitation iPhone – iPad• Android : ice-cream sandwich (4), Honeycomb(3 sur tablet), Gingerbread (2.3)

• UX : User experience . L’expérience de l’utilisateur, ses actions et interactions avec l’interface

• UI : User interface. Le design de l’interface (boutons, drop down, etc)

• User agent : Une chaine de caractère envoyée par le navigateur qui permet de l’identifier

Source : http://www.ourmobileplanet.com/

Qui a un smartphone en France ?

• Naviguer sur le net 78%• E mail 77 %• Recherche générale 73 %

Via « The Mobile Book - smashed.by/2012-market

• Safari

• Android WebKit

• Dolfin

• BlackBerry WebKit

• Opera Mobile

• Opera Mini

• Nokia WebKit

• Ovi

• Palm WebKit

• IE

• MeeGo WebKit

• Firefox

• Obigo WebKit

• BlackBerry (vieil os)

• NetFront

• Safari

• Android WebKit

• Dolfin

• BlackBerry WebKit

• Opera Mobile

• Opera Mini

• Nokia WebKit

• Ovi

• Palm WebKit

• IE

• MeeGo WebKit

• Firefox

• Obigo WebKit

• BlackBerry (viel os)

• NetFront

Attention tous les webkit ne sont pas pareils !!

Source: statts en france StatCounter.com

Navigateur Parts de marché Os

Android webkit 50% Android

Safari 30% iOs

Nokia 4% Symbian

Opera 3% Symbia et view OS

Dolfin 3% Bada (os samsung)

BlackBerry 6 2% Balckberry

Autres 2%

Une information est un flux de données : • xml• Json• Base de données• Etc.

Possibilité de réutiliser une donnée sur différents supports.

• se télécharge et s’installe (appstore /

android market)

• utilisation fonctionnalités de l’appareil

(photo, gyroscope, gps)

• expérience fluide

• dédiée et brandée : mon logo, mes

couleurs

• développement spécifique : iOs, Android,

Blackberry etc. (différents langages)

• ciblé à un seul « appareil » : et les tablettes ?

• Licence de développement + coût de mise en

ligne

• Mises à jour de chaque app pour chaque OS

• Contenu pas indexable par un moteur de

recherche

• La valeur ajoutée pour votre utilisateur ?

Serveur

Envoie du user-agent « browser mobile »

Renvoie vers la version mobile

Renvoie vers la version desktop

Envoie du user-agent « browser desktop »

Un peu de lecture : Modern Mobile Redirect Using .htaccess

• le user agent peut avoir des erreurs

• le user agent peut mentir

• vous les connaissez TOUS les user agents vous ?

même des browsers qui vont sortir demain ??

• et les tablettes ? Et les tailles d’écran ?

http://bradfrostweb.com/blog/post/this-is-the-web/

2005 - 2008 : + 400 résolutions d’écrans différents

• Mobile• Pc• Tv• Tablette• Laptop• Portrait• Paysage• Et demain internet sur mon frigo ??

“ I don't care who you are or where you’re from I still Love you “

«

»

http://mediaqueri.es/

« »

Un ensemble de techniques qui

permettent d’afficher le contenu sur

différents appareils (grilles fluides,

media-queries, images flexibles, etc.)

Via http://inpx.it/Y8WG4l

Ethan Marcotte – Responsive Webdesign

« »

Un concept qui consiste à proposer la

meilleure expérience possible à

l’audience la plus large quelque soit son

le support (à base d’amélioration

progressive des pages)

« Le web sur mobile c’est les applications et les sites mobile dédiés »

Vous avez vraiment envie de faire une application pour chacun ? Un site dédié à chacun ?!

Vous n’avez AUCUN contrôle sur où votre contenu finira dans quelques années, autant le préparer de suite pour le future !

« On utilise un site web sur mobile dans un situation de précipitation »

• vrai, mais plus uniquement

• 40% des utilisateurs utilisent leur

téléphone au toilette

• « 60% des gens ont répondu à cette

question sont des menteurs » - Luke

Wroblewski

« On utilise un site web sur mobile dans un situation de précipitation »

• 28% des utilisateurs aux USA utilisent leur mobile comme moyen

premier d’accéder au net

• ebay vend 2500 voitures par semaine sur leur app mobile

• en Afrique, 25% du traffic de Google la semaine vient des téléphone

(65% le weenkend)

=> le mobile devient doucement l’accès primaire au web d’une partie

grandissante des internautes

Sources http://inpx.it/VWMugQ et http://inpx.it/Y93jnl

« Mobile = moins de contenu »

• les utilisateurs s’attendent à trouver le même contenu sur mobile que

sur desktop

ne pas retirer des fonctionnalités

« masquer » provisoirement des fonctionnalités secondaires sur

mobile, mais garder la possibilité de les afficher à la demande

« Mobile = moins de contenu »

Pas de survol ( :hover ) sur les mobiles :

• éviter de cacher du contenu et l’afficher

au survol

• adapter pour mobile les navigations au

survol

Une utilisation « au doigt » sur les mobiles :

• moins précis qu’une souris

• agrandir les zones « cliquables » (au

moins 44 px)

Source http://www.lukew.com/ff/entry.asp?1085

L’utilisateur sur mobile : différentes zones plus ou moins accessibles

Source http://www.lukew.com/ff/entry.asp?1649

L’utilisateur sur mobile : différentes zones plus ou moins accessibiles

Source http://www.lukew.com/ff/entry.asp?1649

Difficultés d’écriture au clavier sur les mobiles :

• faire remplir le moins de champs possible à l’utilisateur (input vs

checkbox, radio, select)

• repenser les interactions et utiliser des contrôleurs natifs HTML5 : qui

permettent une adaptation du clavier

Source http://inpx.it/ZvUkxH

Optimiser le peu d’espace :

• repenser son contenu en terme de

hiérarchie

• revoir les tailles des textes pour qu’ils

soient lisibles

• généralement contenu sous forme

d’un colonne (mais pas une obligation)

• pas de flash ! (et ses copains)

• évitez le son

• évitez les modales au chargement du site

• par pitié par de pop-up en .js !

Comprendre les besoins de l’utilisateur en amont pour cibler les versions

Penser le design mobile, tablette, bureau dès le début

« »

• nous force à nous concentrer sur l’utilisateur mobile

• pas de place pour les fioritures

• simple => complexe // complexe => simple

• se concentrer sur moins de HTML et de requêtes http

Ce que ça ne veut PAS dire :

• Ne s’occuper que du mobile

• Que le mobile est plus important

• fermez Photoshop

• ouvrez Notepad

• expérimentez avec du CSS3 plutôt que des

images

• Testez sur différentes tailles

• Testez sur différents appareils mobiles

• TESTEZ !

A prendre compte :

• temps : +25%

• Budget : +25 %

• Performances

• contenus

Deux versions d’un site :

• permet d’optimiser les temps de chargement

• servir deux contenus différents

• usage mobile vs desktop trop opposés

• une seule feuille de style pour les réunir tous

• s’affranchir de la taille de l’appareil.

• peut coûter moins cher qu’un deuxième site

• peut être pensé « après » la création du site

• un seul HTML à maintenir

• plus long que ne pas optimiser : + 25% de temps

• connaissances techniques supplémentaires

• connaitre les astuces (et souvent bugs) de pas mal de mobiles

• beaucoup de tests

• moins de créativité : finis les larges backgrounds, le flash à outrance

•temps de chargement plus long : on charge des ressources inutiles pour

les redimensionner ensuite (dépend du navigateur)

• toujours présent

• cliquable (52px) et renvoie à l’accueil

• présente quand l’utilisateur en a besoin

• réduite par défaut sur mobile pour gagner

de l’espace

• présente quand

l’utilisateur en a

besoin

• <input type =

search > =

adaptation du

clavier

• 79 % des utilisateurs de smartphone s’en

servent en faisant des courses =>

importances des notes de l’utilisateur sur

mobile

• les carrousels sous forme de slider sont

difficilement utilisables sur mobile : galerie

d’images

• une détection du « touch » avec modernizr

pour avoir un « swipe » entre les images si

c’est supporté

Ergonomie des carrousels : 10 principes à respecter

• <input type = number > + pattern = clavier

optimisé sur mobile

• bouton « add to card » suffisamment grand

• les 3 boutons = 19 requêtes

et 246.7k d de chargé !

Social media unbuttoned

• Une solution simple, utiliser des liens HTML:

<a href="http://www.facebook.com/sharer.php?u=URL&t=TITLE">link or

image</a>

<a href="http://twitter.com/home?status=STATUS" title="Click to share this

post on Twitter">Share on Twitter</a>

<a href="https://m.google.com/app/plus/x/?v=compose&content=CONTENT">Image

or text</a>

• mettre à profit les capacités de l’appareil

• ajouter de la VA et pertinence aux

informations apportées à l’utilisateur

• les contenus secondaires ne sont pas

chargés sur mobile (mobile first)

• requête ajax pour les charger « à la

demande »

• les contenus secondaires sont chargés sur des écrans plus grands au

chargement de la page

• Sites fluides et des designs adaptables• Un peu de code côté client, plus rien (ou presque) côté serveur

Un peu d’inspiration : http://mediaqueri.es/

« »

• design basé sur des pourcentages

• s’adapte à la taille du navigateur

fixe

fluide

« »

Fluid Layout : http://inpx.it/ZEcuLu

« »

• se base sur la largeur du

viewport

• largeur du navigateur pour

du desktop

• largeur du mobile/tablette

• basé sur un système de

« paliers »

• adaptation « abrupte » parfois

• unités en pixels et largeurs fixes

• A ne pas confondre avec

« adaptive webdesign »

« »

• un mélange entre fluide et adaptive

• le contenu est fluide (basé sur des

pourcentages

• max-width pour les tailles des éléments

• toujours des « paliers » via différents

viewports

• des transitions parfois moins

« abruptes

Adaptive : • facile sur un site déjà existant• si on sait quelles tailles d’écran cibler (choisir ses paliers)

Responsive : • couteux sur un site existant• permet de cibler n’importe quelle taille

vie

wp

ort

Visual viewport = surface virtuelle qu’un mobile accepte d’afficher

Mobile : largeur = largeur du mobileHauteur = hauteur du mobile – bars du navigateur.

Desktop: largeur = largeur du navigateur (scroll bar comprise)Hauteur = hauteur du navigateur (scroll bar comprise) – taille des différentes barres

• La valeur en pixel par défaut du viewport dépend du navigateur et

non du mobile

Crédit photo

• quelques chiffres sur iOS :

• largeur physique de

l’iPhone 4 : 640px

• largeur en px de l’iPhone

(device-width): 320px

• largeur du viewport par

défaut de Safari : 980 px

« »

• Navigateurs récents : tentent d’afficher

l’intégralité du site dans le viewport

• Très peu de contrôle sur l’affichage

« »

• zoom : adapter le contenu du site au

viewport

• Android 4 : 980px

<meta name="viewport" content=" … ">

<meta tag> Exemple définition

width width=device-width /

width=320

Spécifie la largeur du viewport

height height=device-height /

height=640

Spécifie la hauteur du viewport (peu utilisé)

initial-scale initial-scale=2.0 Le degré de zoom au premier affichage de la page (en général 1.0)

user-scalable user-scalable=no / yes Définit si l’utilisateur peut ou non zoomer

minimum-scale minimum-scale=0.5 Définit la valeur limite pour un zoom arrière

maximum-scale maximum-scale=2.5 Définit la valeur maximale pour un zoom (agrandissement)

target-densityDpi target-

densityDpi=high-dpi

Permet de changer la densité d’une page (déconseillé)

<meta name="viewport" content="width=320">

<meta name="viewport" content="width=device-width">

<meta name="viewport" content="width=device-width, initial-scale=2">

<meta name="viewport" content="width=device-width, initial-scale=0.5">

Images via http://inpx.it/10EYupP

• width = device-width

• portrait ET paysage, un viewport de 320

px

• un zoom +44% en paysage

<meta name="viewport" content="width=device-width,

initial-scale=1">

<meta name="viewport" content="initial-scale=1">

@viewport {

width: device-width;

}

@-ms-viewport {

width: device-width;

}

• meta viewport = Apple

• bug dans le « snap mode » IE 10 <

400px

• specs W3C @viewport = standard

(dans le future)

Aller plus loin : http://inpx.it/Z31Kr3

• CSS 2 : media = print, media = screen, media = handheld …

• CSS 3 specifications : media queries

• servent à définir nos « paliers »

«

»

Media query Utilisation

min-width: … px Quand le viewport est plus grand ou au égal à … px

max-width: … px Quand le viewport est plus petit ou au égal à … px

min-device-width: … px Quand la taille de l’écran est plus grande ou au égal à … px

max-device-width: … px Quand la taille de l’écran est plus petite ou au égal à … px

orientation : portrait // orientation: landscape

Cibler l’orientation de l’appareil

-webkit-min-device-pixel-ratio : 1.5 Pour cibler certains appareils avec une densité de pixel élevée

La liste complète sur le site du W3C.

<link rel="stylesheet" type="text/CSS" media="screen and

(max-width: 480px) " href="mobile.CSS" />

Syntaxe externe :

body {

background: gray;

}

@media all and (max-width:480px) {

body {

background: blue;

}

}

Syntaxe interne :

Avantages Inconvénients

Une taille plus petite pour la feuillede style des navigateurs qui ne supportent pas les media queries

Des requêtes http en plus

On peut cibler IE avec une feuille de style spécifique

Oublie de mise à jour lors de la mise à jour de la CSS « normale »

Plus simple pour organiser sa page

Avantages Inconvénients

Pas de requête http supplémentaire

Téléchargement supplémentaire pour des browser qui vont pas utiliser

Plus difficile de l’oublier puisqu’elle fait partie de la CSS normale

JavaScript pour rendre compatible IE 8-

Plus difficile d’organiser la feuille de style

• respecte la cascade

• propriétés héritées

• les propriétés appliquées pour le 500 sont aussi appliquées pour le 700

• il faut écraser un style si on ne veut pas qu’il soit hérité

• images chargées même si on les écrase / cache

http://inpx.it/Z346Gm

Écran supérieur à 780 px

Écran inférieur à 780 px

• on applique chaque style séparément

• il faut répéter les styles que l’on veut pour chaque taille : risque d’oublie

• pas besoin d’écraser un style non désiré

• ne télécharge que les images dans la tranche de taille

Quelques sites utiles / outils de test :

• Responsive design tester (fonctionne en local)

• Responsivepx.com/ (fonctionne en local)

• Bookmarklet pour tester son site

• Resizer Bookmarklet

• Tester les mq supportés par le navigateur

• Media queries for standard device (CSS tricks)

• Target high dpi device

http://inpx.it/Z38V2t

950 et +

Moins de 950 px

Moins de 580 px

« »

• automatiser la tâche : ne pas ré-inventer la roue

• des classes « toutes faites »

• peut-être lourd

• « en ai-je vraiment besoin ? »

• Foundation, Bootstrap, KNACSS, Skeleton, CSSgrid, et tant

d’autres…

Foundation http://inpx.it/Z3fyBS

FAUX !(enfin plutôt suicidaire et non futureproof)

Définir ses points de rupture

• oubliez le mythe des

périphérique, on ne sait pas de

quoi demain sera fait

• Content is King !

• « quand le contenu explose »

• « quand le contenu devient

illisible »

• 45 - 90 caractères par ligne =

bonne moyenne

Passer les liens en ligne (possible si peu de liens)

http://codepen.io/bradfrost/full/vcuem

Cacher la navigation pour les petits écrans sous forme d’une liste déroulante

http://codepen.io/bradfrost/full/sHvazUn menu de navigation “optimal” sur mobiles

« »Cacher la navigation et la faire apparaitre à gauche, droite au par le dessus via une div « off canvas » (en dehors du viewport)

http://dbushell.com/Navigations mobile “off canvas”

Un casse tête…

http://codepen.io/bradfrost/full/qwJvF

Encore plus casse tête ;)

http://codepen.io/inpixelitrust/full/kficJ

• à chaque projet sa navigation

• pas de solution « parfaite »

• expérimenter, expérimenter, expérimenter.

Masquer tous les dépassements :

element{

overflow : hidden ;

}

Source : alsacréations

Découper le mot pour qu’il entre dans l’espace :

element{

word-wrap: break-word;

}

Masquer la fin du mot avec une ellipse :

element{

text-overflow: ellipsis;

}

img{

max-width: 100%;

width: auto;

height: auto; /*fixing ie*/

-webkit-box-sizing: border-box;

-moz-box-sizing: border-box;

box-sizing: border-box;

}

Fonctionne même avec une taille fixe dans le HTML !!

http://inpx.it/13VKGYK

• Rendre une vidéo fluide avec la balise <video> :

Demo elastic video http://inpx.it/10OKCt3

Demo http://inpx.it/10OM9zy

Demo http://inpx.it/10OM9zy

Donner une largeur de 100% à l’iframe ? Oui mais ….

Responsive embeds

1. Encapsuler l’iframe dans un

container

2. tricher pour donner au

container un ratio de 16/9

3. Appliquer le 100% sur l’iframe

• Fonctionne avec « tout » type d’iframe : vimeo, youtube, slidershare, etc.

http://fitvidsjs.com/ un plugin pour automatiser l’ajout du container sur les vidéos

Utilisation d’unités relatives : em ou %

body {

font:1em/1.5em 'Verdana', 'Arial', sans-serif;

}

@media screen and (max-width:800px) {

body {

font-size:0.8em;

}

}

@media screen and (max-width:400px) {

body {

font-size:0.7em;

}

}

Utilisation d’unités relatives rem : relative au root ( = HTML)

html { font-size: 14px}

P { font-size: 1 rem; } /* =14px */

@media screen and (max-width:800px) {

html { font-size: 12px} /*

=> p = 12px */

}

@media screen and (max-width:400px) {

html { font-size: 16px} /*

=> p = 16px */

}

Support de rem http://caniuse.com/#search=rem

• 4 x plus de pixels sur une même zone

• des images « floues » sur les écrans avec un pixel ratio supérieur à 2

Source http://inpx.it/13VL2ys

• doubler la taille physique des images ?

• réduire de 50 % l’image dans le HTML

• Problème : image 2 fois plus grosses = problème de performance sur

les mobiles

Note : @2x = convention Apple pour noter les assets en double de tailles pour du developpement d’applications natives

Source http://inpx.it/13VMkJO

Une solution en CSS : utiliser des média queries device-pixel-ratio (non standard ! )

Version standard : min-resolution( 192dpi)

Problème : toujours 2 images à maintenir

Source http://inpx.it/13VNCEC

Version standard : min-resolution( 192dpi)

Problème : toujours 2 images à maintenir

• http://retinajs.com/

• http://retina-images.complexcompulsions.com/

• automatisent le remplacement des images par une version @2x si

supportée

• problèmes :

• dépendants du JS

• problèmes de performance (retina ne veut pas dire grosse bande

passante)

• http://adaptive-images.com/

• détecter la taille de l’écran du navigateur qui visite la page

• créer automatiquement la bonne taille d’image

• « cacher » l’image et envoyer la version appropriée au navigateur

• Avantages :

• possibilité de charger des petites images sur les petits écrans = perf

• Inconvénients :

• lourd à mettre en place (PHP + .htaccess + JS)

• pas standards

besoin d’une standardisation d’une solution d’image pour le future !

• proposé par http://responsiveimages.org/

• une syntaxe qui permettra de charger une image en fonction de la résolution

de l’écran

• syntaxe similaire à la balise <video> + des media queries

• d’un point de vue de la DA, proposer différentes images dans différents

contextes

• en discussion et non implémenté

• un polyfill « picturefill » pour tester

« »

• Une proposition au W3C par Apple

• conserver la balise <img> et lui ajouter un attribut srcset avec différents

paramètres

• une syntaxe plus complexe que <picture>

• possibilité de proposer différentes images basées sur la résolution et taille du

viewport

Scrset les spécifications http://inpx.it/13VPugH

• Scalable Vector Graphics

• Vectoriel = agrandissable à

l’infini sans pertes

• pas pour des images type

« photo »

• générer avec du code

• générer avec des logiciels

Tutoriel logo cliquable en SVG

« »

• remplacer les lettres d’une police par les icônes utilisées dans l’interface

• plus besoin d’images et sprites

• changer facilement la couleur

• changer facilement la taille

sans perte ni pixellisation

• Inconvénients :

• monochrome

• pas possible d’utiliser en

arrière plan

• utilisation moins

« sémantique »

http://css-tricks.com/examples/IconFont/

• Chargement de la font-icon dans la CSS comme n’importe quelle autre

police

En pratique http://inpx.it/Z7TOox

• utilisation en pseudo-classe :before

• insertion via data-attribut ou classe dans le HTML

Remplacer des images par des gradient CSS 3 :

background: linear-gradient(top, #1e5799 0%,#207cca 51%,#7db9e8 100%); /* W3C */

background: -moz-linear-gradient(top, #1e5799 0%, #207cca 51%, #7db9e8 100%); /* FF3.6+ */

background: -webkit-linear-gradient(top, #1e5799 0%,#207cca 51%,#7db9e8 100%); /*

Chrome10+,Safari5.1+ */

Editeur de gradient colorzilla

Création de coins arrondis

border-radius : 10px ;

Border-radius : 10px 5px 10px 5px ;

Remplacer les png24 transparents par des couleurs rgba et de l’opacité

color:#fff;

opacity : 0.9 ;

= rgba (255,255,255,0.9);

box-shadow: 10px 10px 5px #888;

Créer des ombres portées sans image

box-shadow:

0 0 0 3px red,

0 0 0 5px yellow,

0 0 0 7px grey;

• pas d’images utilisées

• Flexible

• plus léger

http://httparchive.org/

Vos gains de performance en mobile seront également applicables aux autres utilisateurs !

http://mobitest.akamai.com/m/index.cgihttp://validator.w3.org/mobile/

http://inpx.it/XNbabn

• le CSS au début (bloquent le

rendu)

• le JS à la fin avant </body>

(bloquent les téléchargements)

sauf modernizr

• autant que possible, une seule feuille de style = une seule requête (éviter les

@import)

• éviter les redirections !!

http://inpx.it/XNbabn

• maximiser la parallélisation (jusqu’à un certain point) : héberger ses

ressources sur différences serveurs/ sous domaine = forcer téléchargement

en parallèle

• chargement en asynchrone des ressources : dès que possible où qu’il soit

dans le HTML (ex google analytics)

• minifiez le code en prod, compressez les fichiers, combinez vos CSS et JS

pour avoir le moins de requêtes possibles

• jQuery : 90Ko.

• compressé + gzipé : +30Ko

• utiliser une petite partie de jQuery avec sizzlejs (récupération des

sélecteurs uniquement) ou http://zeptojs.com/

• utiliser uniquement les parties dont on a besoin :jquip

• utiliser du VanillaJS

http://inpx.it/XNbXJq

• Utilisez des sélecteurs performants

#header nav ul li a {...}

VS

.primary-link {...}

• Créez du code réutilisable, des classes ré-utilisables pour éviter de ré-écrire

les mêmes propriétés

• Groupez les sélecteurs qui ont les mêmes propriétés

.news, .social {

background: #eee;

border-radius: 5px;

box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.25);

}

• Utilisez la compression de Photoshop / Fireworks pour enregistrer

• Passer ensuite les images dans un outil comme

• http://imageoptim.com/

• http://www.smushit.com/ysmush.it/

• http://kraken.io/

Comparaison des outils de compression d’image en ligne

• encodage d’images en base64 pour éviter une requête supplémentaire

• sur de très petites images ou des patterns

• peut-être utilisé dans le HTML et dans le CSS

http://css-tricks.com/data-uris/

display: none = ressources chargées. Penser le mobile en premier ?

• Commencer par le HTML et CSS du site mobile, utiliser les media-queries

pour « ajouter » des contenus/images = progressive enhancement

• Problème avec IE8 et moins => feuilles de style conditionnelles / classes

conditionnelles ou un polyfill comme respond.js

• charger conditionnellement les ressources pour les grands écrans

• éviter les display:none sur les ressources dont on a pas besoin en mobile

• ne pas les charger à la base

• les charger conditionnellement ensuite en fonction de la taille de

l’écran

Conditional Loading for Responsive Designs

Adaptive Maps

• par défaut on charge l’image

statique (et renvoie l’utilisateur

sur Gmaps directement)

• au dessus de 550px on va

charger la map Google Maps

background-size: 100% 100%;

background-size: 250px 70px;

Changer la taille de l’image de background

« »

Empêcher le zoom du texte sur browser mobile (mais pas sur bureau) :

body {

-webkit-text-size-adjust: 100%;

-ms-text-size-adjust: none;

}

• préfixe vendeur : • -webkit-• -moz-• -o-

<!– Iphone 4 & hdpi 114* 114 px-->

<link rel="apple-touch-icon-

precomposed" sizes="114x114" href="img/apple-touch-icon.png">

<!– iphone 3G et mdpi 72* 72px -->

<link rel="apple-touch-icon-

precomposed" sizes="72x72" href="img/apple-touch-icon.png">

<!-- Plus vieux appareils : 57 * 57 px-->

<link rel="apple-touch-icon-precomposed" href="img/apple-touch-

icon-precomposed.png">

• Image carrée

• Effet « glossy ajouté par l’appareil »

• Rien pour IE6-8 qui n’existent « pas » sur mobile (IE9 gère les media queries)

• Feuille de style à part sans media queries

• Feuille de style pour viser ie mobile

<!--[if (lt IE 9)&(!IEMobile 7)]><link rel="stylesheet" href="desktop.CSS"

media="all"><![endif]-->

• Utiliser des polyfills pour « simuler » les media queries

• Respond.js : https://github.com/scottjehl/Respond

• CSS 3 media queries : http://code.google.com/p/CSS 3-

mediaqueries-js/

• Cocher la case « media queries » de modernizr : http://www.modernizr.com/download/

• CSS3 Flexible box model permet de réarranger visuellement les

éléments plus facilement que des flottants

• propriétés pour changer l’orientation ,l’ordre des blocs, colonnes et

ligne

CSS3 Flexbox Layout module

• CSS3 Multiple Column layout

gérer un nombre différents de

colonnes en fonction de l’écran

• CSS grid layout création d’une

grille “virtuelle” pour placer les

éléments

• CSS3 Template Layout: associer

un élément de layout à un nom et

le placer sur une grille invisible

• Viewport Percentage Lengths vw, vh, vmin, vmax : unités en % relatives à

la dimension du viewport

• CSS4 nouvelles media queries :

• @media(luminosity: normal|dim|washed) adapter à la luminosité

de l’écran

• @media(hover) pour savoir si l’appareil supporte le :hover ou non

• @media(pointer:none|coarse|fine) adapter à la précision du

pointeur de l’appareil

Détecter des capacités « natives » de l’appareil :

• deviceorientationEvent détecter l’orientation de l’appareil

(gyroscope)

• geolocation API détecter la position géographique de l’utilisateur

• Vibration API : accéder nativement aux vibrations de l’appareil

(pour du gaming HTML5)

• network information API récupérer des informations sur le type

de connexion de l’utilisateur

Mozilla WebAPI : une liste très complète des API disponibles

• Fittextjs : adapter le texte à la taille de l’écran

• Responsive slide js : un slideshow responsive

• Iscroll : une scroll bar « native » pour ios (et android)

• Photoswipe : une librairie d’image optimisée mobile

• Isotope : plugin jquery pour un layout flexible

• http://www.onextrapixel.com/2012/06/13/really-useful-resources-and-

tools-for-responsive-web-design/ des outils, encore des outils

• et encore plus d’outils http://www.onextrapixel.com/2013/02/20/55-great-

and-useful-tools-for-responsive-web-design/

• http://lab.goetter.fr/tagged/mobile des expérimentations mobiles

www.inpixelitrust.fr/caweb/opti.m.zip