Avec le nouvel Apple MacBook Pro avec écran Retina, si vous fournissez une image «standard» sur votre site Web, ce sera un peu flou. Vous devez donc fournir une image de la rétine.
Existe-t-il un moyen de basculer automatiquement vers les @2x
images, comme le fait iOS (avec Objective-C)? Ce que j'ai trouvé, c'est: CSS pour les images haute résolution sur les écrans mobiles et rétine , mais j'aimerais pouvoir trouver un processus automatique pour toutes mes images, sans CSS ni JavaScript .
C'est possible?
MISE À JOUR
Je voudrais souligner cet article intéressant suggéré par @Paul D. Waite et une discussion intéressante à ce sujet liée par Sebastian .
html
image
retina-display
jan267
la source
la source
Réponses:
Il existe un nouvel attribut pour la balise img qui vous permet d'ajouter un attribut retina src, à savoir srcset. Aucun javascript ou CSS nécessaire, pas de double chargement d'images.
<img src="low-res.jpg" srcset="high-res.jpg 2x">
Prise en charge du navigateur: http://caniuse.com/#search=srcset
Autres ressources:
la source
src
donc IE / Opera demandera toujours la version DPI supérieure.Il existe différentes solutions, chacune avec ses avantages et ses inconvénients. Le choix qui vous convient le mieux dépend de divers facteurs, tels que la conception de votre site Web, le type de technologie que vos visiteurs habituels utilisent, etc. Notez que les écrans Retina ne se limitent pas au Macbook Pro Retina et aux iMac à venir, mais incluent également appareils mobiles, qui peuvent avoir leurs propres besoins.
Le problème est également étroitement lié aux images dans les conceptions réactives en général. En fait, il est probablement préférable d'utiliser des techniques de conception réactive génériques, au lieu de concevoir pour des appareils spécifiques. Après tout, la technologie continuera également à changer tout le temps à l'avenir.
Certaines des solutions / discussions que j'ai notées:
<picture>
tag pourrait devenir une solution soutenue par un groupe de travail du W3C et même Apple.Comme le montrent les autres réponses, il existe encore plus de techniques - mais probablement aucune meilleure pratique pour le moment.
Une chose que je me demande, c'est comment tester et déboguer certaines de ces techniques, sans avoir le ou les périphériques respectifs disponibles ...
la source
Puisque personne n'a encore mentionné l'évidence, je vais le faire flotter là-bas: si possible, utilisez simplement SVG. Ils apparaissent à de belles résolutions de rétine sans aucun effort.
Le support est bon, IE8 étant le principal dinosaure dont il faut s'inquiéter. Les tailles de fichier gzippées sont souvent meilleures que les formats bitmap (png / jpg) et les images sont plus flexibles; vous pouvez les réutiliser à des résolutions différentes et les redéfinir si nécessaire, ce qui économise à la fois du temps de développement et de la bande passante de téléchargement.
la source
svg
avec les anciens navigateurs.Voici le moins de mixin que j'utilise pour réaliser cela pour les images d'arrière-plan. retina.js ne fonctionne pas pour les images d'arrière-plan si vous utilisez dotLess, car il nécessite son propre mixin qui lui-même utilise une évaluation de script qui n'est pas prise en charge dans dotLess.
L'astuce avec tout cela est d'obtenir le support IE8. Il ne peut pas facilement faire la taille de l'arrière-plan, donc le cas de base (requête multimédia non mobile) doit être une icône simple et non mise à l'échelle. La requête multimédia gère alors le cas de la rétine et est libre d'utiliser la classe de taille d'arrière-plan puisque la rétine ne sera jamais utilisée sur IE8.
Échantillon d'utilisation:
Cela nécessite que vous ayez deux fichiers:
start_grey-97_12.png
[email protected]
Où le
2x
fichier est en double résolution pour la rétine.la source
Fournissez simplement des images de rétine à tout le monde et réduisez l'image à la moitié de sa taille native à l'intérieur de l'élément d'image. Comme disons que votre image est
400px
large et haute - spécifiez simplement la largeur de l'image200px
pour la rendre nette comme ceci:Si votre image est photographique, vous pouvez probablement augmenter la compression JPG dessus sans l'aggraver, car les artefacts de compression JPG ne seront probablement pas visibles lorsque l'image est affichée sur
2x
: voir http://blog.netvlies.nl/ design-interactie / retina-revolution /la source
si ses images d'arrière-plan, un moyen simple de le faire est:
un autre moyen simple consiste à utiliser cette méthode:
Remplacez simplement:
avec
la source
J'ai trouvé cette manière intéressante de fournir des images à plusieurs résolutions.
Il utilise en fait CSS, ce que je voulais éviter, et ne fonctionne que dans Safari et Chrome.
Je parle de
image-set
.Voici un exemple , fourni par Apple ( ici ):
Je veux partager aussi ces deux liens:
image-set()
notation @ W3Cla source
Avec JSF, vous pouvez créer une balise Facelets personnalisée pour éviter d'avoir à ajouter
srcset
à chaque image.Dans votre
taglib.xml
vous pourriez avoir quelque chose comme:Et votre tag pourrait ressembler à quelque chose comme:
Qui pourrait être utilisé comme:
Et rendra:
la source
Ce problème est particulièrement délicat avec les sites réactifs où l'image et la largeur peuvent varier en fonction de la taille du navigateur. De même, lorsque j'ai affaire à un CMS où plusieurs éditeurs téléchargent potentiellement des milliers d'images, il me semblait irréaliste de demander aux gens de télécharger des images spécialement compressées.
J'ai donc écrit un script qui prend cela en compte, il se déclenche en bas de page et à la fin du redimensionnement. A chaque fois en tenant compte de la densité de pixels et de la taille occupée par l'image.
http://caracaldigital.com/retina-handling-code/
la source
Si vous n'êtes pas frustré par la peur d'utiliser java-script, voici un bon article http://www.highrobotics.com/articles/web/ready-for-retina.aspx . Il a une solution très simple.
Et l' exemple de JSFiddle vaut mille mots.
En utilisant:
JS:
la source