क्या "प्रदर्शन: कोई नहीं" छवि को लोड होने से रोकता है?


336

प्रत्येक उत्तरदायी वेबसाइट विकास ट्यूटोरियल display:noneमोबाइल ब्राउज़रों पर सामग्री को लोड करने से सीएसएस संपत्ति का उपयोग करने की सिफारिश करता है ताकि वेबसाइट तेजी से लोड हो। क्या यह सच है? करता है display:noneछवियों को लोड नहीं या यह अभी भी मोबाइल ब्राउज़र पर सामग्री लोड करता है? क्या मोबाइल ब्राउज़रों पर अनावश्यक सामग्री लोड करने से रोकने का कोई तरीका है?


6
ऐसा लगता है कि प्रदर्शन के साथ डाउनलोडिंग
mrwweb

1
W3C सक्रिय रूप से इसका परीक्षण कर रहा है: w3.org/2009/03/image-display-none/test.php
Pino

जवाबों:


191

ब्राउजर होशियार हो रहे हैं। आज आपका ब्राउज़र (संस्करण के आधार पर) छवि लोडिंग को छोड़ सकता है यदि यह निर्धारित कर सकता है कि यह उपयोगी नहीं है।

चित्र में एक display:noneशैली है लेकिन इसका आकार स्क्रिप्ट द्वारा पढ़ा जा सकता है। यदि माता-पिता छिपे हैं तो क्रोम v68.0 छवियों को लोड नहीं करता है।

आप इसे वहां देख सकते हैं: http://jsfiddle.net/tnk3j08s/

आप अपने ब्राउज़र के डेवलपर टूल के "नेटवर्क" टैब को देखकर भी इसे देख सकते हैं।

ध्यान दें कि यदि ब्राउज़र एक छोटे सीपीयू कंप्यूटर पर है, तो छवि को रेंडर करने के लिए नहीं (और पेज को लेआउट) पूरे रेंडरिंग ऑपरेशन को तेज कर देगा, लेकिन मुझे संदेह है कि यह कुछ ऐसा है जो वास्तव में आज समझ में आता है।

यदि आप छवि को लोड होने से रोकना चाहते हैं तो आप अपने दस्तावेज़ में केवल IMG तत्व नहीं जोड़ सकते हैं (या IMG srcविशेषता को "data:"या इसके लिए सेट करें "about:blank")।


50
एक खाली छवि src खतरनाक है। यह सर्वर को एक अतिरिक्त अनुरोध भेजता है। इस विषय पर एक अच्छा पढ़ा nczonline.net/blog/2009/11/30/…
श्रीनिवास

2
@ श्रीनिवासयेदुरी जी, आप सही कह रहे हैं। मैंने बेहतर समाधान के साथ संपादन किया।
सैगुरेट जूल

8
यह उत्तर केवल आंशिक रूप से सही है। मैंने अभी Google Chrome (v35) पर यह परीक्षण किया है और मैं इस बात की पुष्टि कर सकता हूं कि प्रदर्शन सेटों में से कोई भी डाउनलोड नहीं किया गया है। यह संभवतः डेवलपर पर उत्तरदायी डिज़ाइन को आसान बनाने के लिए है।
शॉन व्हेनरी

15
यह उत्तर अब सही नहीं है। FF के नवीनतम संस्करण सहित विभिन्न ब्राउज़रों के अपडेट किए गए परिणामों के लिए नीचे देखें, इस स्थिति को अलग तरह से हैंडल करें
DMTintner

2
आज भी (अक्टूबर 2017), सबसे आम ब्राउज़र क्रोम सभी 'img' तत्व स्रोतों को डाउनलोड करेगा, भले ही वे छिपे हों। यह छिपी हुई पृष्ठभूमि छवियों को डाउनलोड नहीं करेगा।
TKoL

130

यदि आप छवि को सीएसएस में एक div- बैकग्राउंड-इमेज बनाते हैं, जब वह div "डिस्प्ले: कोई नहीं" पर सेट होता है, तो इमेज लोड नहीं होगी। जब सीएसएस अक्षम हो जाता है, तब भी यह लोड नहीं होगा, क्योंकि, ठीक है, सीएसएस अक्षम है।


17
यह वास्तव में मेरी राय में उत्तरदायी डिजाइन के लिए एक बहुत ही उपयोगी टिप है।
रयानडॉल्फ

3
यह एफएफ, क्रोम, सफारी, ओपेरा, मैक्सथन में काम करता है। मैं किसी भी IE की कोशिश नहीं की है।
ब्रेंट

13
सामने से नया तोड़! <div hidden style="display:none;width:0;height:0;visibility:hidden;background:url('test.jpg')"></div>। परिणाम: फ़ायरफ़ॉक्स 29 और ओपेरा 12 लोड नहीं। IE 11 और क्रोम 34 लोड।
कूलमैड

3
उत्तरदायी डिजाइन के लिए @CoolCmd यह अभी भी एक व्यवहार्य विकल्प है, जैसा कि आप अपने सीएसएस मीडिया क्वेरी background-imageमें noneउन मामलों के लिए सेट कर सकते हैं जहां आप छवि को लोड नहीं करना चाहते हैं। जेएस का उपयोग नहीं करता है कि इस उपयोग के मामले के लिए कोई बेहतर विकल्प नहीं मिला है।
Qtax

1
मैंने एक छवि स्लाइडर (जो पृष्ठभूमि छवियों का उपयोग किया था) का परीक्षण किया, जिसमें एक न्यूनतम-चौड़ाई वाली मीडिया क्वेरी थी। उस चौड़ाई के नीचे, पैरेंट डिव का CSS था display: none;। उस चौड़ाई के नीचे खिड़की के साथ नेटवर्क परीक्षण: क्रोम 35, IE11 और एज छवियों को लोड नहीं किया
बाइनरीफंट

57

इसका जवाब इतना आसान नहीं है, जितना आसान हां या ना में है। हाल ही में किए गए एक परीक्षण के परिणामों की जाँच करें:

  • Chrome में: सभी 8 स्क्रीनशॉट- * चित्र लोड किए गए (img 1)
  • फ़ायरफ़ॉक्स में: केवल 1 स्क्रीनशॉट- * छवि जो वर्तमान में प्रदर्शित की जा रही है (लोड 2)

इसलिए आगे खुदाई करने के बाद मैंने यह पाया , जो बताता है कि कैसे प्रत्येक ब्राउज़र सीएसएस डिस्प्ले के आधार पर लोडिंग img आस्तियों को संभालता है: कोई नहीं;

ब्लॉग पोस्ट के कुछ अंश:

  • Chrome और Safari (WebKit):
    WebKit हर बार फ़ाइल को तब डाउनलोड करता है, जब एक पृष्ठभूमि को एक गैर-मिलान मीडिया-क्वेरी के माध्यम से लागू किया जाता है।
  • फ़ायरफ़ॉक्स:
    फ़ायरफ़ॉक्स पृष्ठभूमि छवि के साथ बुलाया छवि डाउनलोड नहीं करेगा अगर शैली छिपी हुई है, लेकिन वे अभी भी img टैग से संपत्ति डाउनलोड करेंगे।
  • ओपेरा:
    जैसे फ़ायरफ़ॉक्स करता है, ओपेरा बेकार पृष्ठभूमि-छवियों को लोड नहीं करेगा।
  • इंटरनेट एक्सप्लोरर:
    IE, जैसे कि WebKit पृष्ठभूमि-चित्र डाउनलोड करेगा भले ही उनके पास प्रदर्शन हो: कोई नहीं; IE6 के साथ कुछ अजीब दिखाई देता है: पृष्ठभूमि-छवि और प्रदर्शन वाले तत्व: कोई भी सेट इनलाइन डाउनलोड नहीं किया जाएगा ... लेकिन वे होंगे यदि उन शैलियों को इनलाइन लागू नहीं किया गया है।

क्रोम- सभी 8 स्क्रीनशॉट- * चित्र लोड किए गए

फ़ायरफ़ॉक्स- केवल 1 स्क्रीनशॉट- * भरी हुई छवि जो वर्तमान में प्रदर्शित हो रही है


1
जब तक वे परिणाम मानकों का हिस्सा नहीं हैं, वे काफी व्यर्थ हैं। Chrome परिवर्तन रेंडरिंग इंजन, ओपेरा परिवर्तन के साथ-साथ IE को कुछ और के साथ बदल दिया जाएगा। आप समय के साथ स्थिर रहने के लिए इस तरह से फ्रिंज सुविधाओं के कार्यान्वयन पर भरोसा नहीं कर सकते। समाधान ब्राउज़र को संकेत देने का एक तरीका होगा जब किसी परिसंपत्ति को आलसी रूप से लोड किया जाना चाहिए।
मार्क कप्लून

5
@MarkKaplun मैं यह सुझाव नहीं दे रहा था कि ये परीक्षा परिणाम आपको वही दिखाएंगे जो आप हर समय हर ब्राउज़र के साथ हमेशा होने की उम्मीद कर सकते हैं। मेरा मतलब केवल यह प्रदर्शित करना था कि इसका उत्तर "हाँ या नहीं जितना सरल नहीं है"। प्रत्येक ब्राउज़र वर्तमान में इसे अलग तरीके से लागू कर रहा है और संभवत: कुछ समय के लिए इस तरह से जारी रहेगा
DMTintner

@DMTintner बिल्कुल सही। और आज के रूप में मैं पुष्टि कर सकता हूँ कि आईओएस सफारी ने डिव की पृष्ठभूमि छवियों को लोड किया है जो `डिस्प्ले: कोई नहीं 'थे। सबसे अच्छा तरीका कुछ भी नहीं मान लेना है और यदि आप एक छवि को लोड नहीं करना चाहते हैं, तो इसे html टैग में न देखें
bhu Boue vidya

34

HTML5 <picture>टैग आपको स्क्रीन की चौड़ाई के आधार पर सही छवि स्रोत को हल करने में मदद करेगा

जाहिरा तौर पर पिछले 5 वर्षों में ब्राउज़रों का व्यवहार बहुत अधिक नहीं बदला है और कई अभी भी छिपी हुई छवियों को डाउनलोड करेंगे, भले ही display: noneउन पर कोई संपत्ति सेट हो।

भले ही एक मीडिया क्वेरी वर्कअराउंड है, यह केवल तब उपयोगी हो सकता है जब छवि को सीएसएस में एक पृष्ठभूमि के रूप में सेट किया गया हो।

जब मैं सोच रहा था कि समस्या का सिर्फ एक जेएस समाधान ( आलसी लोड , पिक्चरफिल , आदि) है, तो यह दिखाई दिया कि एक अच्छा शुद्ध HTML समाधान है जो HTML5 के साथ बॉक्स से बाहर आता है।

और वह <picture>टैग है।

यहां बताया गया है कि MDN इसका वर्णन कैसे करता है:

एचटीएमएल <picture>तत्व कई निर्दिष्ट करने के लिए प्रयोग किया जाता है एक कंटेनर है <source>एक विशेष के लिए तत्वों <img>यह में निहित। ब्राउज़र पृष्ठ के वर्तमान लेआउट (छवि में दिखाई देने वाली बॉक्स की बाधाओं) के अनुसार सबसे उपयुक्त स्रोत का चयन करेगा और यह जिस डिवाइस पर प्रदर्शित होगा (उदाहरण के लिए एक सामान्य या hiDPI डिवाइस।)

और यहाँ इसका उपयोग कैसे करना है:

<picture>
 <source srcset="mdn-logo-wide.png" media="(min-width: 600px)">
 <img src="mdn-logo-narrow.png" alt="MDN">
</picture>

पीछे तर्क

ब्राउज़र imgटैग के स्रोत को लोड करेगा , केवल अगर कोई भी मीडिया नियम लागू नहीं होता है। जब <picture>तत्व ब्राउज़र द्वारा समर्थित नहीं है, तो यह imgटैग दिखाने के लिए फिर से वापस आ जाएगा ।

आम तौर पर आप सबसे छोटी छवि के स्रोत के रूप में डालते हैं <img>और इस प्रकार बड़ी स्क्रीन के लिए भारी छवियों को लोड नहीं करते हैं। इसके विपरीत, यदि कोई मीडिया नियम लागू होता है, तो <img>वसीयत के स्रोत को डाउनलोड नहीं किया जाएगा, इसके बजाय यह संबंधित <source>टैग के url की सामग्री को डाउनलोड करेगा ।

यहां केवल नुकसान यह है कि यदि तत्व ब्राउज़र द्वारा समर्थित नहीं है, तो यह केवल छोटी छवि को लोड करेगा। दूसरी ओर 2017 में हमें मोबाइल के पहले दृष्टिकोण पर विचार करना और कोड करना चाहिए ।

और इससे पहले कि कोई बाहर निकल जाए, यहां के लिए वर्तमान ब्राउज़र समर्थन है <picture>:

डेस्कटॉप ब्राउज़र

डेस्कटॉप ब्राउजर सपोर्ट करता है

मोबाइल ब्राउज़र

मोबाइल ब्राउज़र समर्थन करते हैं

ब्राउज़र समर्थन के बारे में अधिक आप कैन आई का उपयोग कर सकते हैं

अच्छी बात यह है कि html5please का वाक्य इसे कमबैक के साथ उपयोग करना है । और मैं व्यक्तिगत रूप से उनकी सलाह लेने का इरादा रखता हूं।

टैग के बारे में अधिक आप W3C के विनिर्देश में पा सकते हैं । वहाँ एक अस्वीकरण है, जिसका उल्लेख करना मुझे महत्वपूर्ण लगता है:

pictureतत्व समान दिखने से कुछ अलग है videoऔर audioतत्वों। हालांकि उन सभी में sourceतत्व होते हैं, स्रोत तत्व की srcविशेषता का कोई अर्थ नहीं है जब तत्व एक pictureतत्व के भीतर निहित है, और संसाधन चयन एल्गोरिथ्म अलग है। साथ ही, pictureतत्व स्वयं कुछ भी प्रदर्शित नहीं करता है; यह केवल इसके निहित imgतत्व के लिए एक संदर्भ प्रदान करता है जो इसे कई URL से चुनने में सक्षम बनाता है।

तो यह क्या कहता है कि यह केवल छवि को लोड करते समय प्रदर्शन को बेहतर बनाने में मदद करता है, इसके लिए कुछ संदर्भ प्रदान करता है।

और छोटे उपकरणों पर छवि को छिपाने के लिए आप अभी भी कुछ CSS जादू का उपयोग कर सकते हैं:

<style>
  picture { display: none; }

  @media (min-width: 600px) {
    picture {
      display: block;
    }
  }
</style>

<picture>
 <source srcset="the-real-image-source" media="(min-width: 600px)">
 <img src="a-1x1-pixel-image-that-will-be-hidden-in-the-css" alt="MDN">
</picture>

इस प्रकार ब्राउज़र वास्तविक छवि को प्रदर्शित नहीं करेगा और केवल 1x1पिक्सेल छवि डाउनलोड करेगा (जिसे यदि आप एक से अधिक बार उपयोग करते हैं तो कैश किया जा सकता है)। हालांकि, अवगत रहें, कि यदि <picture>टैग ब्राउज़र द्वारा समर्थित नहीं है, तो भी डेसकॉप स्क्रीन पर वास्तविक छवि प्रदर्शित नहीं होगी (इसलिए आपको निश्चित रूप से वहां पॉलीफिल बैकअप की आवश्यकता होगी)।


4
मैंने आपके समान मार्ग लिया, लेकिन इसके बजाय एक डेटा- आईएमजी
Swimburger

10

हां, यह तेजी से, थोड़ा सा रेंडर करेगा, क्योंकि इसमें इमेज रेंडर करने की जरूरत नहीं है और यह स्क्रीन पर सॉर्ट करने के लिए एक कम एलिमेंट है।

यदि आप इसे लोड नहीं करना चाहते हैं, तो एक DIV को खाली छोड़ दें जहां आप html को लोड कर सकते हैं जिसमें बाद में एक <img>टैग होता है।

फायरबग या वायरशार्क का उपयोग करने का प्रयास करें जैसा कि मैंने पहले उल्लेख किया है और आप देखेंगे कि फ़ाइलें display:noneमौजूद होने पर भी स्थानांतरित हो जाती हैं।

ओपेरा एकमात्र ऐसा ब्राउज़र है जो छवि को लोड नहीं करेगा यदि डिस्प्ले किसी पर सेट नहीं है। ओपेरा अब वेबकिट में चला गया है और सभी छवियों को प्रस्तुत करेगा भले ही उनका प्रदर्शन किसी के लिए भी सेट न हो।

यहाँ एक परीक्षण पृष्ठ है जो इसे साबित करेगा:

http://www.quirksmode.org/css/displayimg.html


9

** 2019 उत्तर **

एक सामान्य स्थिति display:noneमें छवि को डाउनलोड होने से नहीं रोका जा सकता है

/*will be downloaded*/

#element1 {
    display: none;
    background-image: url('https://picsum.photos/id/237/100');
}

लेकिन यदि पूर्वज तत्व है display:noneतो वंशज के चित्र डाउनलोड नहीं किए जाएंगे


/* Markup */

<div id="father">
    <div id="son"></div>
</div>


/* Styles */

#father {
    display: none;
}

/* #son will not be downloaded because the #father div has display:none; */

#son {
    background-image: url('https://picsum.photos/id/234/500');
}

अन्य परिस्थितियाँ जो छवि को डाउनलोड होने से रोकती हैं:

1- लक्ष्य तत्व मौजूद नहीं है

/* never will be downloaded because the target element doesn't exist */

#element-dont-exist {
    background-image: url('https://picsum.photos/id/240/400');
}

2- अलग-अलग छवियों को लोड करने वाले दो समान वर्ग

/* The first image of #element2 will never be downloaded because the other #element2 class */

#element2 {
    background-image: url('https://picsum.photos/id/238/200');
}

/* The second image of #element2 will be downloaded */

#element2 {
    background-image: url('https://picsum.photos/id/239/300');
}

आप यहां अपने लिए देख सकते हैं: https://codepen.io/juanmamenendez15/pen/dLQPmX


8

Quirks मोड: चित्र और प्रदर्शन: कोई नहीं

जब छवि के साथ display: noneया किसी तत्व के अंदर होता है display:none, तो ब्राउज़र छवि को डाउनलोड करने का विकल्प नहीं चुन सकता है जब तक कि display वह दूसरे मूल्य पर सेट न हो।

जब आप स्विच करते हैं तो केवल ओपेरा छवि डाउनलोड करता displayहै block। अन्य सभी ब्राउज़र इसे तुरंत डाउनलोड करते हैं।


8

यदि div सेट 'डिस्प्ले: कोई नहीं' है तो एक div एलिमेंट का बैकग्राउंड-इमेज लोड होगा

वैसे भी, यदि उस डिव का एक माता-पिता है और वह माता-पिता 'प्रदर्शन: कोई नहीं' पर सेट है, तो बाल तत्व की पृष्ठभूमि-छवि लोड नहीं होगी । :)

उदाहरण बूटस्ट्रैप का उपयोग कर:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">


<div class="col-xs-12 visible-lg">
	<div style="background-image: url('http://via.placeholder.com/300x300'); background-repeat:no-repeat; height: 300px;">lg</div>
</div>
<div class="col-xs-12 visible-md">
	<div style="background-image: url('http://via.placeholder.com/200x200'); background-repeat:no-repeat; height: 200px;">md</div>
</div>
<div class="col-xs-12 visible-sm">
	<div style="background-image: url('http://via.placeholder.com/100x100'); background-repeat:no-repeat; height: 100px">sm</div>
</div>
<div class="col-xs-12 visible-xs">
	<div style="background-image: url('http://via.placeholder.com/50x50'); background-repeat:no-repeat; height: 50px">xs</div>
</div>



4

यदि आप छवि को सीएसएस में एक डिव-बैकग्राउंड-इमेज बनाते हैं, जब वह डिव 'डिस्प्ले: कोई नहीं' पर सेट होता है, तो इमेज लोड नहीं होगी।

बस ब्रेंट के समाधान पर विस्तार हो रहा है।

आप एक शुद्ध सीएसएस समाधान के लिए निम्नलिखित कर सकते हैं, यह वास्तव में एक उत्तरदायी डिजाइन सेटिंग में img बॉक्स की तरह व्यवहार करता है (जो कि पारदर्शी png के लिए है), जो विशेष रूप से उपयोगी है यदि आपका डिजाइन उत्तरदायी-गतिशील रूप से उपयोग करता है, तो यह img बॉक्स बनाता है। छवियों का आकार बदलना।

<img style="display: none; height: auto; width:100%; background-image: 
url('img/1078x501_1.jpg'); background-size: cover;" class="center-block 
visible-lg-block" src="img/400x186_trans.png" alt="pic 1 mofo">

छवि को केवल तभी लोड किया जाएगा जब दृश्य-lg-block से मीडिया क्वेरी बंधी हुई है और प्रदर्शित होती है: कोई भी डिस्प्ले में परिवर्तित नहीं होता है: ब्लॉक। पारदर्शी पींग का उपयोग ब्राउज़र को एक द्रव डिजाइन (ऊंचाई: ऑटो: चौड़ाई; 100%) में अपने <img> ब्लॉक (और इस प्रकार पृष्ठभूमि-छवि) के लिए चौड़ाई अनुपात को निर्धारित करने के लिए किया जाता है।

1078/501 = ~2.15  (large screen)
400/186  = ~2.15  (small screen)

तो आप 3 अलग-अलग व्यूपोर्ट के लिए निम्नलिखित जैसे कुछ के साथ समाप्त होते हैं:

<img style="display: none; height: auto; width:100%; background-image: url('img/1078x501_1.jpg'); background-size: cover;" class="center-block visible-lg-block" src="img/400x186_trans.png" alt="pic 1">
<img style="display: none; height: auto; width:100%; background-image: url('img/517x240_1.jpg'); background-size: cover;" class="center-block visible-md-block" src="img/400x186_trans.png" alt="pic 1">
<img style="display: none; height: auto; width:100%; background-image: url('img/400x186_1.jpg'); background-size: cover;" class="center-block visible-sm-block" src="img/400x186_trans.png" alt="pic 1">

और प्रारंभिक लोड के दौरान केवल आपके डिफ़ॉल्ट मीडिया व्यूपोर्ट आकार के चित्र लोड होते हैं, फिर बाद में, आपके व्यूपोर्ट के आधार पर, छवियां गतिशील रूप से लोड होंगी।

और कोई जावास्क्रिप्ट नहीं!



2

हाय दोस्तों मैं एक ही मुद्दे से जूझ रहा था, कि मोबाइल पर इमेज लोड कैसे न करें।

लेकिन मुझे एक अच्छा उपाय सूझा। पहले एक img टैग बनाएं और फिर src विशेषता में एक रिक्त svg लोड करें। अब आप अपने URL को सामग्री के साथ इनलाइन शैली के रूप में छवि पर सेट कर सकते हैं: url ('अपनी छवि के लिए लिंक'); अब अपनी पसंद के रैपर में अपना img टैग लपेटें।

<div class="test">
  <img src="data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/‌​svg%22/%3E" style="content:url('https://blog.prepscholar.com/hubfs/body_testinprogress.gif?t=1495225010554')">
</div>

  @media only screen and (max-width: 800px) {
      .test{
       display: none;
      }
    }

ब्रेकर पर कोई भी प्रदर्शित करने के लिए रैपर सेट करें जहां आप छवि को लोड नहीं करना चाहते हैं। Img टैग की इनलाइन css को अब नजरअंदाज कर दिया गया है क्योंकि डिस्प्ले के साथ आवरण में लिपटे एक तत्व की शैली को नजरअंदाज नहीं किया जाएगा, इसलिए छवि को लोड नहीं किया जाता है, जब तक कि आप एक ब्रेकपॉइंट तक नहीं पहुंचते हैं जहां रैपर में डिस्प्ले ब्लॉक होता है।

तुम वहाँ जाओ, वास्तव में आसान तरीका है मोबाइल ब्रेकप्वाइंट पर एक img लोड नहीं है :)

एक कार्यकारी उदाहरण के लिए इस कोडपेन को देखें: http://codepen.io/fennefoss/pen/jmXjvo


मुझे पसंद है कि वेब कैसे विकसित होता रहता है, इस चाल को पहले नहीं देखा था, contentप्रदर्शित छवि को बदलने के लिए -प्रतिरूपता का उपयोग करते हुए , यही है। क्या आप इस पर संगतता के कुछ आंकड़े दे सकते हैं?
विंडगज़र

एज के बारे में बुरा करने के लिए: /, कम से कम यह फ़ायरफ़ॉक्स, चोम और सफारी के नवीनतम संस्करणों में काम करता है।
मिकेल फेनफॉस 12

2

नहीं। छवि हमेशा की तरह लोड हो जाएगी और तब भी उपयोगकर्ता की बैंडविड्थ का उपयोग करेगा यदि आप मोबाइल फोन उपयोगकर्ता बैंडविड्थ की बचत पर विचार कर रहे हैं। क्या आप मीडिया क्वेरी का उपयोग कर सकते हैं और उन उपकरणों को फ़िल्टर कर सकते हैं जो आप चाहते हैं कि आपकी छवि लोड हो। छवि को एक div की पृष्ठभूमि छवि के रूप में सेट किया जाना चाहिए, आदि और टैग नहीं क्योंकि छवि टैग छवि लोड होने की परवाह किए बिना होगा यदि स्क्रीन आकार और मीडिया क्वेरी सेट।


1

एक अन्य संभावना एक <noscript>टैग का उपयोग करना और छवि को <noscript>टैग के अंदर रखना है। फिर noscriptइमेज हटाने के लिए टैग हटाने के लिए जावास्क्रिप्ट का उपयोग करें। इस तरह आप प्रगतिशील संवर्द्धन का उपयोग करके माँग पर चित्र लोड कर सकते हैं।

इस पॉलीफ़िल का उपयोग मैंने <noscript>IE8 में टैग की सामग्री को पढ़ने के लिए लिखा था

https://github.com/jameswestgate/noscript-textcontent


1

@Media क्वेरी सीएसएस का उपयोग करें, मूल रूप से हम सिर्फ एक प्रोजेक्ट जारी करते हैं, जहां हमारे पास डेस्कटॉप पर एक पेड़ की एक विशाल छवि थी, लेकिन तालिका / मोबाइल स्क्रीन में नहीं दिखाई दे रही थी। इसलिए छवि को उसके काफी आसान लोड करने से रोकें

यहाँ एक छोटा सा स्निपेट है:

.tree {
    background: none top left no-repeat; 
}

@media only screen and (min-width: 1200px) {
    .tree {
        background: url(enormous-tree.png) top left no-repeat;
    }
}

आप प्रदर्शन / दृश्यता / अस्पष्टता के साथ दिखाने और छिपाने के लिए एक ही सीएसएस का उपयोग कर सकते हैं लेकिन छवि अभी भी लोड हो रही थी, यह सबसे विफल सुरक्षित कोड था जिसे हम लेकर आए थे।


0

हम छवियों को मोबाइल पर लोड नहीं करने के बारे में बात कर रहे हैं, है ना? तो क्या हुआ अगर आपने सिर्फ एक @media (न्यूनतम-चौड़ाई: 400px) {बैकग्राउंड-इमेज: thing.jpg}

तब यह केवल एक निश्चित स्क्रीन चौड़ाई के ऊपर की छवि को नहीं देखेगा?


-2

प्रदर्शन का उपयोग करने की चाल: छवियों में से कोई भी उन्हें एक आईडी आवंटित करने के लिए नहीं है। यह था कि इसे बनाने के लिए बहुत सारे कोड की आवश्यकता नहीं है। यहां मीडिया क्वेरी और 3 स्टाइलशीट का उपयोग करके एक उदाहरण दिया गया है। फोन के लिए एक, टैबलेट के लिए एक और डेस्कटॉप के लिए एक। मेरे पास 3 चित्र, एक फोन, एक टैबलेट और एक डेस्कटॉप की छवि है। फ़ोन स्क्रीन पर केवल फ़ोन की एक छवि प्रदर्शित होगी, एक टैबलेट केवल टैबलेट छवि प्रदर्शित करेगा, एक डेस्कटॉप डेस्कटॉप कंप्यूटर छवि पर प्रदर्शित होता है। यह काम करने के लिए एक कोड उदाहरण है:

सोर्स कोड:

<div id="content">
<img id="phone" src="images/phone.png" />
<img id="tablet" src="images/tablet.png" />
<img id="desktop" src="images/desktop.png" />
</div>

फोन CSS जिसे मीडिया क्वेरी की आवश्यकता नहीं है। इसका img # फोन जो इसे काम करता है:

img#phone {
    display: block;
    margin: 6em auto 0 auto;
    width: 70%;
    }

img#tablet {display: none;}
img#desktop {display: none;}

गोली सीएसएस:

@media only screen and (min-width: 641px) {
img#phone {display: none;}

img#tablet {
    display: block;
    margin: 6em auto 0 auto;
    width: 70%;
    }
}

और डेस्कटॉप सीएसएस:

@media only screen and (min-width: 1141px) {
img#tablet {display: none;}

img#desktop {
    display: block;
    margin: 6em auto 0 auto;
    width: 80%;
    }
}

सौभाग्य और मुझे बताएं कि यह आपके लिए कैसे काम करता है।


4
सवाल यह नहीं है कि display: noneछवि पर कैसे सेट किया जाए । यह है: क्या "प्रदर्शन: कोई नहीं" छवि को लोड होने से रोकता है?
इवजेनिया मनोलोवा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.