@Weston'ın cevabına dayanarak, daha genel bir jQuery çözümü oluşturdum, temelde sadece JS ve CSS'yi kopyalayıp yapıştırabilir ve HTML kısmına odaklanabilirsiniz;)
CSS
... yüklenirken resimlerin zorlukla görünmesini sağlamak için
.srcSet{
position: fixed;
z-index: 0;
z-index: -1;
z-index: -100;
}
JS / jQuery
Bu komut dosyası, alan (veya desteklenmiyorsa) ve sınıfla en yakın ebeveyni CSS olarak koyan srcSetclass ve bind loadolayına sahip tüm görüntüleri gözden geçirir .currentSrcsrcbackground-imagebgFromSrcSet
Bu tek başına yeterli olmaz! Bu nedenlewindow load, yükleme olaylarının tamamlanıp tamamlanmadığını test etmekiçinolayabir aralık denetleyicisi koyar, yoksa onları tetikler. (img loadOlay çok sık tetikleyen edilir sadece ilk kez yük yükler aşağıdaki üzerine, resim kaynağı, önbellekten alınan edilebilir img yük durumunda ortaya çıkan DEĞİL kovuluyor! )
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
... şöyle görünebilir:
<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>
Not: Sınıf bgFromSrcSetgerekir değil ayarlanmalıdır imgkendisi! Yalnızca imgDOM ana ağacındaki öğelere ayarlanabilir .