Je veux savoir comment éviter de charger toutes les images que j'ai créées pour différents appareils à l'aide de la requête multimédia. Actuellement, mon balisage ressemble à celui ci-dessous:
<img src="/media/1062/lg.png" alt="Fresh from garden" class="visible-lg">
<img src="/media/1062/lg.png" alt="Fresh from garden" class="visible-md">
<img src="/media/1062/lg.png" alt="Fresh from garden" class="visible-sm">
<img src="/media/1062/lg.png" alt="Fresh from garden" class="visible-xs">
ci-dessus charge toutes les images, quel que soit l'appareil et alourdit la page pour les appareils mobiles. J'utilise razor cshtml et cherche le meilleur moyen de le mettre en œuvre.
Aucune suggestion ?
Dans tous les cas, vous ne voudriez pas utiliser les requêtes multimédia basées sur CSS, car les navigateurs téléchargeront toutes ces images, qu'elles soient affichées ou masquées. Vous pouvez réaliser ce que vous voulez en utilisant le balisage HTML5 ou Javascript.
Voici quelques méthodes qui devraient vous aider à démarrer:
<img sizes="100vw" srcset="sm.jpg 400w, md.jpg 800w, lg.jpg 1600w" src="sm.jpg">
<picture> <source media="(min-width: 36em)" srcset="lg.jpg 1024w, md.jpg 640w, sm.jpg 320w" sizes="33.3vw"> <source srcset="cropped-lg.jpg 2x, cropped-sm.jpg 1x" /> <img src="sm.jpg" /> </picture>
<img data-interchange="[sm.jpg, small], [md.jpg, medium], [lg.jpg, large]">
<img data-src-base='/' data-src='<480:xs.jpg,<768:sm.jpg,<960:md.jpg,>960:lg.jpg'>
<img src="sm.png" data-min-device-width-641="md.png">
<img id="img1" src="example.jpg" style="max-width:100%;" />
<img sizes="(min-width:1000px) 930px, 90vw" data-srcset="sm.jpg 500w, md.jpg 640w, lg.jpg 1024w" data-src="md.jpg" class="lazyload">
<div class="delayed-image-load" data-src="example{width}" data-alt="text"></div>