Voici le mixin less 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 utilise lui-même l'évaluation script qui n'est pas prise en charge dans dotLess.
L'astuce consiste à obtenir la prise en charge d'IE8. Il ne peut pas facilement utiliser la taille de l'arrière-plan, de sorte que le cas de base (requête média non mobile) doit être une icône simple, non mise à l'échelle. La requête média gère alors le cas de la rétine et est libre d'utiliser la classe background-size puisque la rétine ne sera jamais utilisée sur IE8.
.retina-background-image( @path, @filename,@extension, @size )
{
.background-size( cover );
background-image: url( "@{path}@{filename}@{extension}" );
@media only screen and ( -webkit-min-device-pixel-ratio: 2 ),
only screen and ( -moz-min-device-pixel-ratio: 2 ),
only screen and ( -o-min-device-pixel-ratio: 2/1 ),
only screen and ( min-device-pixel-ratio: 2 )
{
background-image:url( "@{path}@{filename}@x2@{extension}" );
background-size:@size @size;
}
}
Exemple d'utilisation :
.retina-background-image( "../references/Images/", "start_grey-97_12", ".png", 12px );
Pour ce faire, vous devez disposer de deux fichiers :
start_grey-97_12.png
start_grey-97_12@2x.png
Où le 2x
Le fichier est en double résolution pour la rétine.
0 votes
Pas mal ! Je ne veux pas utiliser de js mais cette solution semble être la bonne.
0 votes
J'ai fait beaucoup de recherches à ce sujet récemment, et jusqu'à présent, je n'ai trouvé aucune solution qui puisse être mise en œuvre sans spécifier une image surdimensionnée pour tout le monde, en utilisant JavaScript ou en utilisant les requêtes de média CSS. J'aimerais voir une solution qui utilise la négociation de contenu http, mais cela nécessiterait le soutien du navigateur.
3 votes
Vous pouvez le faire côté serveur avec PHP : retina-images.complexcompulsions.com
2 votes
@michaelward82 : pour les images photographiques, Daan Jobsis suggère que vous pouvez servir des images de taille rétina à tout le monde sans que la taille de vos fichiers soit supérieure à celle des images non rétina. en augmentant le niveau de compression JPG appliqué à l'image. Le fait que l'image soit affichée à une échelle réduite ou sur un écran rétina signifie souvent que les artefacts de compression ne sont pas visibles.
0 votes
Qu'y a-t-il de mal à utiliser les requêtes de média CSS pour cela ? Il semble qu'elles soient construites spécifiquement pour des fonctionnalités telles que celle-ci .
1 votes
En fait, ce n'est pas le cas erroné mais je me demandais s'il n'y avait pas des astuce à utiliser. Dans iOS c'est automatique... c'est pour ça que je pose la question ! :)
2 votes
Notez que l'auteur de l'"article intéressant suggéré" a commis quelques grosses erreurs qui sont décrites ici : silev.org/test/Retina-resize.html - L'article est donc à prendre avec des pincettes.
0 votes
Vous pouvez également utiliser resize.ai qui automatise l'ensemble du processus.