WebKit gère mieux les images Retina

Nicolas Furno |
La dernière version de WebKit intègre enfin une solution propre et vraiment efficace pour insérer des images Retina dans un site. Les écrans dits Retina, comme ceux des iPhone et iPad récents ou des MacBook Pro Retina, ont besoin d’images deux fois plus grandes pour éviter un rendu flou disgracieux. Ces images sont toutefois plus lourdes et ralentissent le chargement des sites, ce qui est gênant quand un internaute affiche une page sans écran Retina. Jusque-là, les solutions proposées tiennent toutes du bricolage rarement efficace et c’est la première fois qu’un navigateur propose une méthode à la fois simple, universelle et fonctionnelle.

Concrètement, le principe est d’enrichir la balise <img> qui sert à insérer une image en HTML. L’image de base, pour les écrans standard, est toujours renseignée avec l’attribut src=, mais on peut ajouter un attribut srcset= pour définir une image Retina. Cette méthode est en fait beaucoup plus souple : on peut choisir une image pour plusieurs résolutions et même aller au-delà de la définition habituelle des écrans Retina aujourd’hui. Il suffit d’indiquer le chemin d’une image et son rôle, dans cet exemple  2x pour l’image qui s’affichera sur les écrans Retina.



Cet attribut srcset= n’est géré que par la toute dernière version de WebKit, c’est-à-dire la version activement développée et parfois très instable du moteur utilisé par Safari. Autant dire qu’il va se passer quelques mois avant son intégration à des navigateurs stables et utilisés par le grand public. Et même si Apple devrait rapidement intégrer cet attribut à ses appareils OS X et iOS, ce ne sera pas le cas de tous les navigateurs.

Cette méthode exploitant une balise standard, ce n’est toutefois pas gênant : si le navigateur n’est pas compatible avec srcset=, il utilisera la valeur de l’attribut src=. Ainsi, sur la page de démonstration mise en place par les développeurs, vous ne verrez ni l’image 1x rouge, ni la version 2x verte, mais une troisième image src bleue qui témoigne de l’absence de prise en charge.


Cette nouvelle méthode ne fonctionne qu’avec la toute dernière version de WebKit. Sur un autre navigateur, comme ici Safari 7, on a l’image de base.


Ce n’est qu’un premier pas, mais c’est un pas essentiel pour offrir aux internautes des images parfaitement adaptées à leur écran. Les écrans Retina restent encore rares en dehors des appareils mobiles, mais ils sont appelés à devenir la norme et cette méthode n’a a priori aucun défaut pour offrir à chaque internaute la meilleure image.
avatar Amonchakai | 
Après j'espere que l'on aura le choix de la version... car sur un tel/tablette tu as pas forcement super envie d'alourdir le web... Le retina c'est surtout bien pour le texte...
avatar ErGo_404 | 
Seul défaut, la norme ? Est-ce que ça fait partie d'une norme actuelle (HTML5 et/ou xHTML) ? Le soucis c'est si chaque moteur intègre sa propre bidouille pour gérer ses écrans, ça va devenir pénible pour les devs du web.
avatar oZen | 
@ErGo_404 J'ai envie de te dire comme d'hab' Enfin ça allait mieux mais bon…
avatar Nicolas Furno | 
@ Ergo_404 : il me manque sûrement des connaissances techniques, mais qu'est-ce qui empêcherait cette méthode de devenir un standard rapidement ? Elle me semble très simple et je ne vois aucun contre-argument à son utilisation, contrairement à toutes les méthodes qui avaient émergé jusque-là.
avatar jerome_l | 
Bah, un petit canvas HTML5 et un zoom *0.5 sur l'image qu'on trace, et hop ! Par contre je rejoins l'avis d'Amonchakai: sur tablette (enfin, plus généralement avec un réseau lent), il faut faire gaffe, ça devient vite lourd ...
avatar joneskind | 
@jerome_l : Il me semble que c'est ça qui alourdit les pages web, parce que tu dois télécharger une image 4 fois plus lourde que nécessaire et la traiter en local. Ici la balise sert à attribuer la bonne image au bon écran. C'est un peu plus lourd sur le serveur (¼ de plus) mais beaucoup plus léger pour l'internaute et la bande passante.
avatar Nicolas Furno | 
Si ça vous intéresse, j'ai des images Retina sur mon blog et elles s'affichent dans tous les cas. Du coup, oui, c'est lourd et j'espère beaucoup de cette solution… http://voiretmanger.fr
avatar SMDL | 
@nicolasf Merci, superbe :)
avatar lordfpx | 
En attendant, vous pouvez utiliser des images "Retina" enregistrées en très basse qualité (1 ou 2 dans les paramètres d'enregistrement sous Photoshop). N'oubliez pas d'utliser des dimensions en % et de spécifier un max-width de 100% sur la balise img. Et voilà, l'image ne pèsera pas plus qu'un jpeg de bonne qualité, mais dans une résolution doublée donc très belle sur un écran normal et Retina (affichez cette image à 50% et vous verrez que la qualité est très bonne).

CONNEXION UTILISATEUR