@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 srcSet
class ve bind load
olayına sahip tüm görüntüleri gözden geçirir .currentSrc
src
background-image
bgFromSrcSet
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
load
Olay ç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 bgFromSrcSet
gerekir değil ayarlanmalıdır img
kendisi! Yalnızca img
DOM ana ağacındaki öğelere ayarlanabilir .