Com base na resposta de @Weston , eu construí uma solução jQuery mais geral, você pode basicamente apenas copiar e colar o JS e CSS e se concentrar na parte HTML;)
CSS
... para garantir que as imagens dificilmente serão visíveis durante o carregamento
.srcSet{
position: fixed;
z-index: 0;
z-index: -1;
z-index: -100;
}
JS / jQuery
Este script irá percorrer todas as imagens que possuem srcSet
classe e load
evento de ligação que leva currentSrc
(ou src
se não for compatível) e o coloca como um background-image
CSS para o pai mais próximo com bgFromSrcSet
classe.
Isso por si só não seria suficiente! Portanto, ele também coloca um verificador de intervalo nowindow
load
evento para testar se os eventos de carregamento foram concluídos, caso contrário, ele os aciona. (oimg
load
evento geralmente é disparado apenas no carregamento inicial , nos carregamentos seguintes, a origem da imagem pode ser recuperada do cache, resultando no evento img load NÃO sendo disparado! )
jQuery(function($){
var $window = $(window);
var $srcSets = $('.srcSet');
$srcSets.each(function(){
var $currImg = $(this);
$currImg
.load(function(){
var img = $currImg.get(0);
var src = img.currentSrc ? img.currentSrc : img.src;
$currImg.closest('.bgFromSrcSet').css('background-image', "url('"+src+"')");
$srcSets = $srcSets.not($currImg);
$currImg.remove();
})
;
});
$window.load(function(){
var loadChecker = setInterval(function(){
if( $srcSets.length > 0 )
$srcSets.load();
else
clearInterval(loadChecker);
}, 150);
});
});
HTML
... poderia ser assim:
<div class="bgFromSrcSet">
<img class="srcSet"
alt=""
src="http://example.com/something.jpeg"
srcset="http://example.com/something.jpeg 5760w, http://example.com/something-300x200.jpeg 300w, http://example.com/something-768x512.jpeg 768w, http://example.com/something-1024x683.jpeg 1024w, http://example.com/something-1000x667.jpeg 1000w"
sizes="(max-width: 2000px) 100vw, 2000px"
>
Something else...
</div>
Nota: a classe nãobgFromSrcSet
deve ser definida como o próprio! Ele só pode ser definido para os elementos na árvore pai do DOM.img
img