@Weston के उत्तर के आधार पर , मैंने एक और सामान्य jQuery समाधान बनाया है, आप मूल रूप से JS और CSS को कॉपी और पेस्ट कर सकते हैं और HTML भाग पर ध्यान केंद्रित कर सकते हैं;)
सीएसएस
... छवियों को सुनिश्चित करने के लिए लोड करते समय शायद ही दिखाई देगा
.srcSet{
position: fixed;
z-index: 0;
z-index: -1;
z-index: -100;
}
जेएस / jQuery
यह स्क्रिप्ट उन सभी छवियों से गुजरेगी, जिनमें srcSet
क्लास और बाइंड load
इवेंट है, जो currentSrc
(या src
यदि समर्थित नहीं है) और क्लास के background-image
साथ निकटतम माता-पिता के लिए इसे सीएसएस के रूप में रखता है bgFromSrcSet
।
इतना ही काफी नहीं होगा! इसलिए यहwindow
load
इस बात के परीक्षण के लिएएक अंतराल परीक्षक भी रखता हैकि क्या लोड घटनाओं को पूरा किया गया है, यदि नहीं, तो यह उन्हें ट्रिगर करता है। (img
load
ईवेंट बहुत बार केवल पहली बार लोड पर ट्रिगर कियाजाता है, निम्न लोड पर, छवि स्रोत को कैश से पुनर्प्राप्त किया जा सकता है, जिसके परिणामस्वरूप img लोड ईवेंट को निकाल नहीं दिया जा सकता है! )
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);
});
});
एचटीएमएल
... इस तरह देख सकते हैं:
<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>
नोट: वर्ग bgFromSrcSet
को स्वयं सेट नहीं किया जाना चाहिए img
! यह केवल img
DOM पैरेंट ट्री में तत्वों के लिए सेट किया जा सकता है ।