"প্রদর্শন: কিছুই নয়" কোনও চিত্র লোড হওয়া থেকে বাধা দেয়?


336

প্রতিটি প্রতিক্রিয়াশীল ওয়েবসাইট বিকাশ টিউটোরিয়ালটি display:noneমোবাইল ব্রাউজারগুলিতে লোড হওয়া থেকে সামগ্রী লুকাতে CSS সম্পত্তি ব্যবহার করার পরামর্শ দেয় যাতে ওয়েবসাইটটি দ্রুত লোড হয়। এটা সত্যি? না display:noneইমেজ লোড করা বা এটি এখনও মোবাইল ব্রাউজারে সামগ্রী লোড করে? মোবাইল ব্রাউজারগুলিতে অপ্রয়োজনীয় সামগ্রী লোড করা রোধ করার কোনও উপায় আছে কি?


6
এটি প্রদর্শিত হয় যে প্রদর্শন সহ ডাউনলোডগুলি রোধ করার কিছু উপায় রয়েছে: কিছুই নয়, কেবল ভ্যানিলা উপায় নয়: timkadlec.com/2012/04/media-query-asset-downloading-results
mrwweb

উত্তর:


191

ব্রাউজারগুলি আরও স্মার্ট হয়ে উঠছে। আজ আপনার ব্রাউজারটি (সংস্করণ অনুসারে) চিত্রটি লোডিং এড়িয়ে যেতে পারে যদি এটি নির্ধারণ করতে পারে যে এটি কার্যকর নয়।

চিত্রটির একটি display:noneশৈলী রয়েছে তবে এর আকারটি স্ক্রিপ্ট দ্বারা পঠিত হতে পারে। ক্রোম ভি 68.0 চিত্রটি লোড করে না যদি পিতামাতার লুকানো থাকে।

আপনি সেখানে এটি পরীক্ষা করতে পারেন: http://jsfiddle.net/tnk3j08s/

আপনি আপনার ব্রাউজারের বিকাশকারী সরঞ্জামগুলির "নেটওয়ার্ক" ট্যাবটি দেখে এটিও পরীক্ষা করে দেখতে পারতেন।

নোট করুন যে ব্রাউজারটি যদি একটি ছোট সিপিইউ কম্পিউটারে থাকে তবে চিত্রটি রেন্ডার না করে (এবং পৃষ্ঠাটি বিন্যাস করতে হবে) পুরো রেন্ডারিং অপারেশনটি দ্রুত করে তুলবে তবে আমি সন্দেহ করি এটি আজ এমন কিছু যা সত্যই বোঝায়।

আপনি লোড কেবল আপনার দস্তাবেজে IMG উপাদান যোগ (অথবা IMG সেট না পারে থেকে ইমেজ প্রতিরোধ করতে চান srcকরতে অ্যাট্রিবিউট "data:"বা "about:blank")।


50
একটি খালি চিত্র src বিপজ্জনক। এটি সার্ভারে একটি অতিরিক্ত অনুরোধ প্রেরণ করে। nczonline.net/blog/2009/11/30/…
শ্রীনিবাস

2
@ শ্রীনিবাস ইয়েধুরী হ্যাঁ, আপনি ঠিক বলেছেন। আমি আরও ভাল সমাধান সহ সম্পাদনা করেছি।
অস্বীকার করেছেন সাগ্রেট

8
এই উত্তরটি কেবল আংশিকভাবে সঠিক। আমি কেবল এটি গুগল ক্রোমে (v35) পরীক্ষা করেছি এবং আমি নিশ্চিত করতে পারি যে প্রদর্শনীর সাথে সেট থাকা চিত্রগুলি কোনওটিরই ডাউনলোড করা হয়নি। এটি সম্ভবত বিকাশকারীদের প্রতিক্রিয়াশীল নকশা সহজ করতে।
শন হুইনারি

15
এই উত্তরটি এখন আর সঠিক নয়। এফএফ এর সর্বশেষ সংস্করণ সহ বিভিন্ন ব্রাউজারগুলি কীভাবে এই পরিস্থিতিটিকে
অন্যভাবে

2
আজও (oct 2017), সর্বাধিক প্রচলিত ব্রাউজার ক্রোম সমস্ত 'img' উপাদান উত্সগুলি লুকিয়ে রাখলেও ডাউনলোড করবে। এটি লুকানো ব্যাকগ্রাউন্ড চিত্রগুলি ডাউনলোড করবে না।
TKoL

130

যদি আপনি চিত্রটি সিএসএসে একটি ডিভের একটি ব্যাকগ্রাউন্ড-চিত্র তৈরি করেন, যখন সেই ডিভটি "প্রদর্শন: কোনও নয়" তে সেট করা থাকে, তখন চিত্রটি লোড হবে না। সিএসএস অক্ষম থাকলে, এটি এখনও লোড হবে না, কারণ, ঠিক আছে, সিএসএস অক্ষম করা আছে।


17
এটি আসলে আমার মতে প্রতিক্রিয়াশীল ডিজাইনের জন্য খুব দরকারী একটি পরামর্শ।
ryandlf

3
এটি এফএফ, ক্রোম, সাফারি, অপেরা, ম্যাক্সথনে কাজ করে। আমি কোনও আইই চেষ্টা করে দেখিনি।
ব্রেন্ট

13
সামনে থেকে নতুন ব্রেকিং! <div hidden style="display:none;width:0;height:0;visibility:hidden;background:url('test.jpg')"></div>। ফলাফল: ফায়ারফক্স 29 এবং অপেরা 12 লোড করবেন না। আইই 11 এবং ক্রোম 34 লোড।
CoolCmd

3
প্রতিক্রিয়াশীল ডিজাইনের জন্য কুলসিএমডি এটি এখনও একটি কার্যকর বিকল্প, আপনি নিজের সিএসএস মিডিয়া ক্যোয়ারিতে background-imageএমন noneক্ষেত্রে সেট করতে পারেন যেখানে আপনি চিত্রটি লোড করতে চান না। জেএস ব্যবহার করে না এমন ব্যবহারের ক্ষেত্রে এর চেয়ে ভাল বিকল্প খুঁজে পাওয়া যায় নি।
Qtax

1
আমি একটি চিত্র স্লাইডার পরীক্ষা করেছি (যা ব্যাকগ্রাউন্ড চিত্র ব্যবহার করেছে) যার একটি ন্যূনতম প্রস্থের মিডিয়া কোয়েরি ছিল। সেই প্রস্থের নীচে, পিতামাতার ডিভের সিএসএস ছিল display: none;। সেই প্রস্থের নীচে উইন্ডো সহ নেটওয়ার্ক টেস্টিং: ক্রোম 35, আই 11 এবং এজ চিত্রগুলি লোড করেনি
বাইনারিফ্যান্ট

57

উত্তরটি সহজ হ্যাঁ বা না হিসাবে সহজ নয়। আমি সম্প্রতি করেছি এমন পরীক্ষার ফলাফলগুলি দেখুন:

  • ক্রোমে: সমস্ত 8 স্ক্রিনশট- * চিত্রগুলি লোড হয়েছে (img 1)
  • ফায়ারফক্সে: বর্তমানে প্রদর্শিত হচ্ছে এমন 1 টি স্ক্রিনশট- * চিত্র লোড হয়েছে (img 2)

তাই আরও খনন পর আমি পাওয়া এই , কীভাবে প্রতিটি ব্রাউজারের চিত্র সম্পদ লোড হ্যান্ডলগুলি CSS প্রদর্শন উপর ভিত্তি করে ব্যাখ্যা করেছেন: কেউ না;

ব্লগ পোস্ট থেকে অংশ:

  • ক্রোম এবং সাফারি (ওয়েবকিট):
    কোনও মিল নেই মিডিয়ার-ক্যোয়ারির মাধ্যমে কোনও পটভূমি প্রয়োগ করা ব্যতীত ওয়েবকিট প্রতিবার ফাইলটি ডাউনলোড করে।
  • ফায়ারফক্স:
    ফায়ারফক্স শৈলীর আড়াল থাকলে পটভূমির চিত্রযুক্ত চিত্রটি ডাউনলোড করবে না তবে তারা এখনও আইএমজি ট্যাগ থেকে সম্পদ ডাউনলোড করবে।
  • অপেরা:
    ফায়ারফক্সের মতো অপেরাও অকেজো ব্যাকগ্রাউন্ড-চিত্র লোড করবে না।
  • ইন্টারনেট এক্সপ্লোরার:
    IE, ওয়েবকিটের মতো ব্যাকগ্রাউন্ড-চিত্রগুলি প্রদর্শন করলেও ডাউনলোড করবে : কোনওটি নয়; আই 6 এর সাথে অদ্ভুত কিছু উপস্থিত হবে: একটি ব্যাকগ্রাউন্ড-চিত্র এবং ডিসপ্লে সহ উপাদানগুলি: কোনও সেট ইনলাইন ডাউনলোড করা হবে না ... তবে সেই স্টাইলগুলি ইনলাইন প্রয়োগ না করা থাকলে তারা হবে they

ক্রোম- সমস্ত 8 স্ক্রিনশট- * চিত্রগুলি লোড হয়েছে

ফায়ারফক্স- বর্তমানে প্রদর্শিত 1 টি স্ক্রিনশট- * চিত্র লোড হয়েছে


1
যতক্ষণ না এই ফলাফলগুলি মানগুলির অংশ না হয় তারা যথেষ্ট অর্থহীন। ক্রোম রেন্ডারিং ইঞ্জিন পরিবর্তন করে, পাশাপাশি অপেরা পরিবর্তন করে এবং অন্য কিছু দিয়ে IE প্রতিস্থাপন করা হবে। সময়ের সাথে স্থিতিশীল থাকার জন্য আপনি কেবল এ জাতীয় সজ্জা বৈশিষ্ট্যগুলি প্রয়োগ করার উপর নির্ভর করতে পারবেন না। সমাধানটি ব্রাউজারটিকে ইঙ্গিত করার একটি উপায় হবে যখন কোনও সম্পদ যদি অলসভাবে লোড করা উচিত।
মার্ক কাপলুন

5
@ মার্কক্যাপলুন আমি প্রস্তাব দিচ্ছিলাম না যে এই পরীক্ষার ফলাফলগুলি আপনাকে ঠিক এমনটি দেখাতে পারে যা আপনি সর্বদা প্রতিটি ব্রাউজারের সাথে সর্বদা হওয়ার আশা করতে পারেন। আমি কেবল বোঝাতে চেয়েছিলাম যে উত্তরটি "হ্যাঁ বা না হিসাবে সহজ নয়"। প্রতিটি ব্রাউজার বর্তমানে এটি আলাদাভাবে বাস্তবায়ন করছে এবং সম্ভবত এটি কিছু সময়ের জন্য এইভাবে চলতে থাকবে
ডিএমটিন্টনার

@DMTintner ঠিক ঠিক আছে। এবং ঠিক আজকের মতোই আমি ডিও এর আইওএস সাফারি লোড করা ব্যাকগ্রাউন্ড চিত্রগুলি নিশ্চিত করতে পারি যেগুলি 'প্রদর্শন: কিছুই নয়'। সর্বোত্তম পদ্ধতির হ'ল কিছু অনুমান না করা এবং আপনি যদি কোনও চিত্র বোঝাই না করতে চান তবে এটি কোনও এইচটিএমএল ট্যাগে উল্লেখ করবেন না
বুউ বিদ্যা

34

এইচটিএমএল 5 <picture>ট্যাগ আপনাকে পর্দার প্রস্থের উপর নির্ভর করে সঠিক চিত্র উত্সটি সমাধান করতে সহায়তা করবে

স্পষ্টতই গত 5 বছরে ব্রাউজারগুলির আচরণের খুব বেশি পরিবর্তন হয়নি এবং display: noneতাদের মধ্যে কোনও সম্পত্তি সেট করা থাকলেও অনেকে এখনও লুকানো চিত্রগুলি ডাউনলোড করবেন।

যদিও একটি মিডিয়া ক্যোয়ারীস কাজটি পুরোপুরি রয়েছে, এটি তখনই কার্যকর হতে পারে যখন চিত্রটি সিএসএসে একটি পটভূমি হিসাবে সেট করা হয়েছিল।

আমি যখন ভাবছিলাম যে সমস্যার একটি জেএস সমাধান আছে ( অলস বোঝা , চিত্রফিল ইত্যাদি), এটি উপস্থিত হয়েছিল যে একটি দুর্দান্ত খাঁটি এইচটিএমএল সমাধান রয়েছে যা এইচটিএমএল 5 এর বাক্স থেকে বেরিয়ে আসে।

এবং এটি <picture>ট্যাগ।

এমডিএন এটি কীভাবে বর্ণনা করে তা এখানে:

এইচটিএমএল <picture>উপাদান একাধিক নির্দিষ্ট করতে ব্যবহৃত একটি ধারক <source>একটি নির্দিষ্ট জন্য উপাদান <img>এটি অন্তর্ভুক্ত। ব্রাউজারটি পৃষ্ঠার বর্তমান বিন্যাস (চিত্রটির বাক্সগুলির মধ্যে যে সীমাবদ্ধতা উপস্থিত হবে) এবং যে ডিভাইসে এটি প্রদর্শিত হবে (যেমন একটি সাধারণ বা হাইডিপিআই ডিভাইস)

এবং এটি কীভাবে ব্যবহার করবেন তা এখানে:

<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>ট্যাগের ইউআরএলের সামগ্রীগুলি ডাউনলোড করবে ।

কেবলমাত্র এখানেই সমস্যাটি হ'ল যদি উপাদানটি ব্রাউজার দ্বারা সমর্থিত না হয় তবে এটি কেবলমাত্র ছোট চিত্রটি লোড করবে। অন্যদিকে 2017 সালে আমাদের মোবাইলের প্রথম পদ্ধতির মধ্যে চিন্তা করা এবং কোড করা উচিত ।

এবং কেউ খুব বেরিয়ে আসার আগে, এখানে বর্তমান ব্রাউজার সমর্থন <picture>:

ডেস্কটপ ব্রাউজারগুলি

ডেস্কটপ ব্রাউজার সমর্থন করে

মোবাইল ব্রাউজারগুলি

মোবাইল ব্রাউজারগুলি সমর্থন করে

ক্যান আই ইউজ এ আপনি ব্রাউজার সমর্থন সম্পর্কে আরও জানতে পারেন

ভাল জিনিস হ'ল এইচটিএমএল 5 প্লিজ এর বাক্যটি এটি ফ্যালব্যাক সহ ব্যবহার করা । এবং আমি ব্যক্তিগতভাবে তাদের পরামর্শ নেওয়ার ইচ্ছা করি।

ট্যাগ সম্পর্কে আপনি জানতে পারেন W3C এর স্পেসিফিকেশন । সেখানে একটি অস্বীকৃতি রয়েছে, যা আমি উল্লেখ করা গুরুত্বপূর্ণ বলে মনে করি:

pictureউপাদান অনুরূপ সুদর্শন থেকে কিছুটা ভিন্ন videoএবং audioউপাদান। যখন এগুলির মধ্যে সমস্ত উপাদান রয়েছে sourceতবে উত্স উপাদানটির srcবৈশিষ্ট্যের কোনও অর্থ নেই যখন উপাদানটি কোনও উপাদানের মধ্যে বাসা বেঁধে থাকে pictureএবং উত্স নির্বাচন অ্যালগরিদম আলাদা। পাশাপাশি, pictureউপাদান নিজেই কিছু প্রদর্শন করে না; এটি কেবলমাত্র এতে থাকা imgউপাদানটির জন্য একটি প্রসঙ্গ সরবরাহ করে যা এটি একাধিক URL থেকে চয়ন করতে সক্ষম করে choose

সুতরাং এটি যা বলে তা হ'ল এটি কেবল কোনও চিত্রকে লোড করার সময় এর সাথে কিছু প্রসঙ্গ সরবরাহের মাধ্যমে কর্মক্ষমতা উন্নত করতে সহায়তা করে।

এবং ছোট ডিভাইসে চিত্রটি আড়াল করতে আপনি এখনও কিছু সিএসএস যাদু ব্যবহার করতে পারেন:

<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
আমি আপনার মত একই পথটি নিয়েছি, তবে এর পরিবর্তে ডেটা- ইমগ
সুইমবার্গার

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

কুইর্কস মোড: চিত্র এবং প্রদর্শন: কোনওটি নয়

যখন ইমেজটি display: noneকোনও উপাদানটির সাথে থাকে বা থাকে display:noneতবে ব্রাউজারটি display অন্য কোনও মানতে সেট না হওয়া অবধি চিত্রটি ডাউনলোড না করার বিকল্প বেছে নিতে পারে ।

শুধুমাত্র অপেরা ইমেজ যখন আপনি সুইচ ডাউনলোড displayকরতে block। অন্যান্য সমস্ত ব্রাউজারগুলি তাৎক্ষণিকভাবে এটি ডাউনলোড করে।


8

ডিভ উপাদানটি 'প্রদর্শন: কিছুই নয়' সেট করা থাকলে একটি ডিভ এলিমেন্টের ব্যাকগ্রাউন্ড-চিত্র লোড হবে

যাইহোক, যদি একই ডিভের পিতামাতা থাকে এবং সেই পিতামাতাকে 'প্রদর্শন: কোনও নয়' তে সেট করা থাকে তবে শিশু উপাদানটির ব্যাকগ্রাউন্ড-চিত্র লোড হবে না । :)

বুটস্ট্র্যাপ ব্যবহারের উদাহরণ:

<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 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">

চিত্রটি কেবল তখনই লোড হবে যখন দৃশ্যমান-এলজি-ব্লকের সাথে আবদ্ধ মিডিয়া ক্যোয়ারী ট্রিগার করা এবং প্রদর্শন করা হবে: প্রদর্শনীতে: ব্লকে কোনওটিই পরিবর্তন করা হবে না। স্বচ্ছ png ব্রাউজারটিকে উপযুক্ত উচ্চতা নির্ধারণের জন্য ব্যবহার করা হয়: আপনার <img> ব্লক (এবং এইভাবে ব্যাকগ্রাউন্ড-চিত্র) এর জন্য তরল ডিজাইনে (উচ্চতা: অটো; প্রস্থ: 100%) সেট করতে width

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 বৈশিষ্ট্যে একটি ফাঁকা এসভিজি লোড করুন। এখন আপনি বিষয়বস্তু সহ একটি ইনলাইন স্টাইল হিসাবে আপনার URL টি চিত্রটিতে সেট করতে পারেন: ইউআরএল ('আপনার চিত্রের লিঙ্ক');। এখন আপনার আইএমজি ট্যাগটি আপনার পছন্দের একটি মোড়কে জড়িয়ে দিন।

<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;
      }
    }

আপনি যে ব্রেকটি পয়েন্টটি চিত্রটি লোড করতে চান না সেখানে কোনওটি প্রদর্শন করতে মোড়ক সেট করুন। ইমপ ট্যাগের ইনলাইন সিএসএস এখন উপেক্ষা করা হবে যেহেতু ডিসপ্লে সহ মোড়কে মোড়ানো কোনও উপাদানটির স্টাইলটিকে এড়ানো হবে না, সুতরাং চিত্রটি লোড করা হয় না, যতক্ষণ না আপনি একটি ব্রেকপয়েন্টে পৌঁছান যেখানে মোড়কের ডিসপ্লে ব্লক রয়েছে।

আপনি সেখানে যান, মোবাইল ব্রেকপয়েন্টে কোনও ইম্জি লোড না করা সত্যিই সহজ উপায় :)

একটি কার্যকারী উদাহরণের জন্য এই কোডেপেনটি দেখুন: http://codepen.io/fennefoss/pen/jmXjvo


আমি কীভাবে contentওয়েবকে বিকশিত হতে দেখি, এই কৌশলটি আগে দেখিনি, দেখানো চিত্রটি পরিবর্তনের জন্য প্রোপার্টি ব্যবহার করে, তা love আপনি এই বিষয়ে সামঞ্জস্যের কিছু পরিসংখ্যান দিতে পারেন?
উইন্ডগ্যাজার

এজ সম্পর্কে খারাপ কথা: /, অন্তত এটি ফায়ারফক্স, কোম এবং সাফারি এর সর্বশেষতম সংস্করণগুলিতে কাজ করে।
মিক্কেল ফেনফেস

2

না। চিত্রটি যথারীতি লোড করা হবে এবং আপনি যদি মোবাইল ফোন ব্যবহারকারী ব্যান্ডউইথ সেভিংয়ের বিষয়টি বিবেচনা করছেন তবে ব্যবহারকারীর ব্যান্ডউইথটি ব্যবহার করবেন u আপনি যা করতে পারেন তা হল মিডিয়া ক্যোয়ারী ব্যবহার করুন এবং আপনার চিত্রটি লোড হওয়ার জন্য যে ডিভাইসগুলি চান তা ফিল্টার করা উচিত our আপনার ছবি চিত্রটি অবশ্যই একটি ডিভ ইত্যাদির পটভূমি চিত্র হিসাবে সেট করা উচিত এবং কোনও ট্যাগ নয় কারণ চিত্রের স্ক্রিনের আকার এবং মিডিয়া ক্যোয়ারী সেট নির্বিশেষে চিত্র ট্যাগটি চিত্রটি লোড করবে।


1

আরেকটি সম্ভাবনা হ'ল একটি <noscript>ট্যাগ ব্যবহার করে এবং ছবিটির ভিতরে <noscript>ট্যাগ রেখে । তারপরে noscriptট্যাগটি সরাতে জাভাস্ক্রিপ্টটি ব্যবহার করুন কারণ আপনার ইমেজটি প্রয়োজন। এইভাবে আপনি প্রগতিশীল বর্ধন ব্যবহার করে চাহিদা অনুযায়ী চিত্রগুলি লোড করতে পারেন।

বিষয়বস্তু পড়তে এই polyfill আমি লিখেছি ব্যবহার করুন <noscript>IE8 আপনাকে ট্যাগ করলে

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


1

@ মিডিয়া ক্যোয়ারী সিএসএস ব্যবহার করুন, মূলত আমরা কেবল এমন একটি প্রকল্প প্রকাশ করি যেখানে আমাদের পাশে ডেস্কটপে একটি গাছের প্রচুর চিত্র ছিল তবে টেবিল / মোবাইল স্ক্রিনে প্রদর্শিত হচ্ছে না। সুতরাং চিত্রটি বেশ সহজ লোড করা থেকে রোধ করুন

এখানে একটি ছোট স্নিপেট রয়েছে:

.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

আমরা মোবাইলে চিত্রগুলি লোড হচ্ছে না এমন কথা বলছি, তাই না? সুতরাং আপনি যদি কেবল একটি @ মিডিয়া (মিনিম প্রস্থ: 400px) did পটভূমি-চিত্র: জিনিস.jpg did করেন

এটি কি তখন কেবল নির্দিষ্ট পর্দার প্রস্থের উপরে চিত্রটি সন্ধান করবে না?


-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>

ফোন সিএসএস যার কোনও মিডিয়া ক্যোয়ারীর প্রয়োজন নেই। এটি ইমগ # ফোন যা এটি কাজ করে:

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কোনও চিত্রটিতে কীভাবে সেট করবেন তা নয় । এটি: "প্রদর্শন: কিছুই নয়" কোনও চিত্র লোড হওয়া থেকে বাধা দেয়?
ইভজেনিয়া মানোলোভা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.