मैं एक सीएसएस ग्रिड सिस्टम का उपयोग कर रहा हूं जो प्रतिशत पर आधारित है। मेरे पास 4 कॉलम के साथ ग्रिड है, पृष्ठ की कुल चौड़ाई का प्रत्येक 25%। मैं इस तरह प्रत्येक "25% सेल" के अंदर उत्पादन मेरी छवि टैग: ब्राउज़र आकार बदलता है"उत्तरदायी" छवियों (अज्ञात ऊंचाई) के साथ आलसी लोडिंग
<img src="foo.jpg" style="max-width:100%" />
के रूप में, छवियों को भी प्रत्येक 25% सेल की 100% में भरने के लिए आकार बदल दें। ब्राउजर ऊंचाई बढ़ाता है, जैसे कि मैंने "ऊंचाई: ऑटो" रखा था (जो छोड़े जाने पर निहित है)।
अब मैं आलसी लोडिंग क्षमता को जोड़ना चाहता हूं। समस्या यह है कि छवियों को लोड करने से पहले, पृष्ठ पर उनकी ऊंचाई अज्ञात है। ब्राउज़र को छवि डाउनलोड करना है & इसके पहलू अनुपात का निरीक्षण करें, और इसके लिए ऊंचाई की गणना करें। इससे पहले, सभी छवियों की ऊंचाई 1px है। चूंकि प्रत्येक छवि में 1 पीएक्स की ऊंचाई होती है, इसलिए उन्हें सभी को "व्यूपोर्ट के भीतर" माना जाता है और तुरंत लोड किया जाता है।
वर्तमान में मैं अवधारणा का एक सबूत जहां पहले img टैग outputting करने के लिए है, मैं सर्वर पर छवि के पहलू अनुपात, और उत्पादन एक डेटा विशेषता में गणना:
<img src="foo.jpg" style="max-width:100%" data-aspect="1.7742" />
फिर, घटना पर "दस्तावेज़ तैयार ", मैं हर छवि के माध्यम से लूप और पूर्व आलसी लोडिंग के पिक्सल में एक निश्चित 'ऊंचाई' मान सेट:
$('img').each(function() {
var img = $(this);
var width = img.width();
var ratio = img.data('aspectratio');
var height = width/ratio;
$(this).css('height', height+'px');
});
यह काम करने अर्थ में, लगता है कि यह अब लोड सभी एक ही पर छवियों समय, लेकिन स्क्रॉल के रूप में केवल छवियों को लोड करता है।
हालांकि, ऐसा लगता है कि यह नई समस्याओं का कारण बन सकता है, जैसे छवियों को ब्राउज़र का आकार बदलता है। कॉलबैक आलसी लोडिंग के लिए आग लगने पर मुझे 'ऊंचाई' को वापस 'ऑटो' पर स्विच करना होगा। यह उपयोगकर्ता द्वारा देखी जाने वाली छवियों का ख्याल रखेगा - लेकिन गुना के नीचे की छवियों का अभी भी ब्राउज़र का आकार बदलने पर अनुचित 'ऊंचाई' मान होगा। हर बार जब ब्राउज़र का आकार बदलता है, तो मुझे उन सभी छवियों को फिर से चालू करना होगा जो पहले गुना के नीचे थे, उनकी अद्यतन चौड़ाई मापते हैं, उनके पहलू अनुपात को पढ़ते हैं, और नई ऊंचाई अपडेट करते हैं, और फिर आलसी लोडिंग को फिर से ऊपर ले जाने के लिए कुछ भी संभालते हैं तह। यदि मैं ऐसा नहीं करता हूं, तो गलत छवि मान वाले छवियों के कारण लोडिंग बहुत जल्दी या बहुत देर हो सकती है।
मेरा सवाल यह है कि अज्ञात ऊंचाइयों के साथ आलसी लोड छवियों के अन्य कोई अन्य तरीके हैं, मैंने यहां वर्णित सटीक विधि के अलावा, और इसमें क्या ramifications होगा? क्या कार्यक्रम के लिए दर्द होने के अलावा, मेरी विधि के लिए कोई नकारात्मक पक्ष है?
में दी गई है जैसे आप इसे किसी न किसी दिया है। ब्राउज़र में केवल छवि के आयामों को जानने के दो तरीके हैं: इसे डाउनलोड करने के लिए, या इसे HTML में निर्दिष्ट करने के लिए। – Blazemonger
आश्वासन के लिए धन्यवाद। मैं कुछ प्रकार के दृष्टिकोण की कल्पना भी कर रहा था जहां यह पहली 4 छवियों को आलसी लोड करता है, तब तक पूरा हो जाता है जब तक वे पूरा नहीं हो जाते हैं, और फिर शेष छवियों की नई स्थिति को पुन: प्राप्त करते हैं। केवल समस्या यह है कि अवरोधन पहली जगह में आलसी लोडिंग के बिना चीजों को धीमा कर देगा। –
ठीक है, मैं सिर्फ पैडिंग-डाउन चाल के बारे में जागरूक हो गया: http://thisisthat.co.uk/notebook/2013-10-07-lazy-loading-responsive-images http://andmag.se/2012/ 10/उत्तरदायी-छवियों-आलसी-लोड-और-मल्टीसर्व-छवियों/ –