কীভাবে চিত্রগুলি গতিশীলভাবে লোড করবেন (বা অলসভাবে) যখন ব্যবহারকারীরা তাদের দেখার জন্য স্ক্রোল করে


97

আমি এটি "আধুনিক" ওয়েবসাইটগুলিতে লক্ষ্য করেছি (উদাহরণস্বরূপ ফেসবুক এবং গুগল চিত্র অনুসন্ধান) যেখানে ভাঁজ লোডের নীচের চিত্রগুলি কেবলমাত্র যখন পৃষ্ঠাগুলিকে দৃশ্যমান ভিউপোর্ট অঞ্চলে আনার জন্য যথেষ্ট পরিমাণে স্ক্রোল করে ( উত্স অনুসারে, পৃষ্ঠাটি দেখায়) এক্স সংখ্যক <img>ট্যাগ কিন্তু সেগুলি সরাসরি সার্ভার থেকে আনা হয় না )। এই কৌশলটি কী বলা হয়, এটি কীভাবে কাজ করে এবং এটি কতগুলি ব্রাউজারে কাজ করে। এবং এমন কোনও jQuery প্লাগইন রয়েছে যা সর্বনিম্ন কোডিংয়ের মাধ্যমে এই আচরণটি অর্জন করতে পারে।

সম্পাদনা করুন

বোনাস: এইচটিএমএল উপাদানগুলির জন্য "অনস্ক্রোলড ইন্টোভিউ" বা অনুরূপ ইভেন্ট থাকলে কেউ ব্যাখ্যা করতে পারেন। যদি তা না হয় তবে এই প্লাগইনগুলি কীভাবে কাজ করবে?


আপনার কি কেবল চিত্র আলস্য লোডিং দরকার? আপনার যদি সামগ্রীর অলস লোডিংয়ের প্রয়োজন হয় তবে অসীম স্ক্রোল প্লাগইনটি সঠিক উত্তর
soju

@rsp @ jwegner @ নিকোলাস দুঃখিত, তবে সালমান যা চাইছে তা নয়।
অ্যালেক স্মার্ট

@ সোসু: আমি কেবল অলস লোডিং ছবিতে আগ্রহী; তবে আমি ভবিষ্যতের (একদম দূরবর্তী) সময়ে অন্য সম্ভাবনার দিকে নজর দিতে পারি।
সালমান এ

21
ব্রাউজারের ডিফল্ট আচরণ কেবল দৃশ্যমান চিত্রগুলি লোড করার জন্য কেন আপনাকে অবাক করে দেয়। কল্পনা করুন, যদি ঘটনাটি ঘটে থাকে তবে বিগত 18 বছরে ব্যান্ডউইথ কতটা সঞ্চয় হয়ে থাকতে পারে!
ম্যাথু লক

4
যদিও আমি অলস লোডিংয়ের পিছনে কারণটি বুঝতে পেরেছি ... আমি যখন সেই পদ্ধতিটি ব্যবহার করে এমন কোনও সাইট ভিজিট করি তখন আমি সত্যই এটি দাঁড়াতে পারি না। ছবিগুলি জ্বলজ্বলে আমাকে বাদাম চালায়! :)
বুস্কি

উত্তর:


64

এখানে কিছু উত্তর অসীম পৃষ্ঠার জন্য। সালমান যা জিজ্ঞাসা করছেন তা হচ্ছে চিত্রের অলসতা।

প্লাগ লাগানো

ডেমো

সম্পাদনা: এই প্লাগইনগুলি কীভাবে কাজ করে?

এটি একটি সরল ব্যাখ্যা:

  1. উইন্ডোর আকার এবং সমস্ত চিত্র এবং তাদের আকারগুলির অবস্থান সন্ধান করুন
  2. চিত্রটি যদি উইন্ডো আকারের মধ্যে না থাকে তবে এটিকে একই আকারের স্থানধারক দিয়ে প্রতিস্থাপন করুন
  3. যখন ব্যবহারকারী নীচে স্ক্রোল করে এবং চিত্রের অবস্থান <স্ক্রোল + উইন্ডো উচ্চতা, চিত্রটি লোড হয়

প্রয়োগে, তারা কি একই রকম কাজ করবে না? চিত্রগুলির একক কলামে অসীম স্ক্রোলটি অলসভাবে লোড করার মতো হবে, তাই না? সম্ভবত আমি বিভ্রান্ত।
jwegner

4
@jwegner অনন্ত স্ক্রোলটি যখন ব্যবহারকারী নীচে পৌঁছে (বা কাছে) পৌঁছেছে তখন আপনাকে পৃষ্ঠার নীচে নতুন আইটেম যুক্ত করতে দেবে। অলস-লোড হওয়া চিত্রগুলিতে পৃষ্ঠাতে একই মাত্রার স্থানধারক থাকতে পারে, চিত্রগুলি নিজেরাই স্ক্রলে লোড করা হয়েছিল। সুতরাং, পরবর্তী পৃষ্ঠাগুলি বিন্যাসকে প্রভাবিত না করে অলস লোড করতে পারে।
আনিকা ব্যাকস্ট্রোম

এটি ডেস্কটপ ব্রাউজার এবং আইওএসে দুর্দান্ত কাজ করছে তবে অ্যান্ড্রয়েডে (3.x / 4.x সহ) কাজ করে না। কোন ধারণা কেন? স্ক্রোল ইভেন্টটি কি সমর্থিত নয়?
লাহসরাহ

আমি এই প্লাগইনটির জন্য ডকুমেন্টেশনটি দিয়ে যাচ্ছিলাম এবং এটি দেখতে দুর্দান্ত লাগবে। আমার পরবর্তী প্রকল্পে এটি ব্যবহার করতে যাচ্ছি।
মাফিন ম্যান

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

10

( সম্পাদনা করুন: সংরক্ষণাগারযুক্ত অনুলিপিগুলির সাথে ভাঙা লিঙ্কগুলি প্রতিস্থাপন করা হয়েছে)

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

jQuery সোনার

এই স্লাইডগুলিতে সোনার নিয়ে কথা বলেছেন ডেভ । সোনারটি 46 স্লাইডে শুরু হয়, যখন সামগ্রিক "চাহিদার উপর চাপ" আলোচনা স্লাইড 33 এ শুরু হয়।


আমি ভাবছি কীভাবে এটি আপেলসিনির অলসতাটির সাথে তুলনা করে? এটা কি আরও বেশি হালকা? এটি কি প্রতিটি ব্রাউজারে কাজ করে? আমার মনে আছে অলসলোড ক্রোমে কাজ করে না।
ডেথলক

8

আমি আমার নিজস্ব বেসিক পদ্ধতিটি নিয়ে এসেছি যা মনে হয় ঠিক কাজ করে (এখনও অবধি)। এমন কিছু জনপ্রিয় স্ক্রিপ্টের ঠিকানা সম্ভবত এমন এক ডজন জিনিস রয়েছে যা আমি ভাবিনি।

দ্রষ্টব্য - এই সমাধানটি দ্রুত এবং বাস্তবায়নের পক্ষে সহজ তবে কার্য সম্পাদনের পক্ষে অবশ্যই দুর্দান্ত নয়। অপুরভ দ্বারা উল্লিখিত এবং বিকাশকারীদের দ্বারা ব্যাখ্যা করা নতুন ছেদকৃত পর্যবেক্ষককে অবশ্যই অবশ্যই দেখুন যদি কার্য সম্পাদন সমস্যা হয়।

JQuery

$(window).scroll(function() {
    $.each($('img'), function() {
        if ( $(this).attr('data-src') && $(this).offset().top < ($(window).scrollTop() + $(window).height() + 100) ) {
            var source = $(this).data('src');
            $(this).attr('src', source);
            $(this).removeAttr('data-src');
        }
    })
})

নমুনা এইচটিএমএল কোড

<div>
    <img src="" data-src="pathtoyour/image1.jpg">
    <img src="" data-src="pathtoyour/image2.jpg">
    <img src="" data-src="pathtoyour/image3.jpg">
</div>

ব্যাখ্যা করা হয়েছে

পৃষ্ঠাটি যখন স্ক্রল করা হয় তখন পৃষ্ঠার প্রতিটি চিত্র চেক করা হয় ..

$(this).attr('data-src') - যদি ছবিটির বৈশিষ্ট্য থাকে data-src

এবং এই চিত্রগুলি উইন্ডোর নীচ থেকে কত দূরে ..

$(this).offset().top < ($(window).scrollTop() + $(window).height() + 100)

আপনার পছন্দের সাথে + 100 সামঞ্জস্য করুন (- উদাহরণস্বরূপ 100)

var source = $(this).data('src');- data-src=চিত্রটির url এর মান পায়

$(this).attr('src', source); - যে মানটি মধ্যে রাখে src=

$(this).removeAttr('data-src'); - ডেটা-এসআরসি বৈশিষ্ট্যটি সরিয়ে দেয় (যাতে আপনার ব্রাউজার ইতিমধ্যে লোড হওয়া চিত্রগুলির সাথে জড়িত সংস্থানগুলি অপচয় করে না)

বিদ্যমান কোডে যুক্ত করা হচ্ছে

আপনার এইচটিএমএল রূপান্তর করতে, একটি সম্পাদক এ কেবল অনুসন্ধান করুন এবং এর src="সাথে প্রতিস্থাপন করুনsrc="" data-src="


4
নিখুঁত। আশীর্বাদ
ফ্যাম

5

এখানে খুব সুন্দর অসীম স্ক্রোল প্লাগইন রয়েছে

আমি নিজেই কখনও প্রোগ্রাম করি নি, তবে আমি কীভাবে এটি কাজ করে তা কল্পনা করব।

  1. উইন্ডো স্ক্রোলিংয়ের সাথে একটি ইভেন্ট আবদ্ধ

    $(window).scroll(myInfinteScrollFunction);
    
  2. স্ক্রোল শীর্ষটি উইন্ডো আকারের চেয়ে বড় কিনা তা ডাকা ফাংশনটি যাচাই করে

    function myInfiniteScrollFunction() {  
        if($(window).scrollTop() == $(window).height())  
        makeAjaxRequest();  
    }
    
  3. একটি রেজাল্ট অনুরোধ করা হয়, কোন ফলাফলটি # থেকে শুরু হয়, কতটি গ্রহণ করতে হয় এবং ডেটা টানার জন্য প্রয়োজনীয় অন্য কোনও পরামিতি নির্দিষ্ট করে।

    $.ajax({
        type: "POST",
        url:  "myAjaxFile.php",
        data: {"resultNum": 30, "numPerPage": 50, "query": "interesting%20icons" },
        success: myInfiniteLoadFunction(msg)
    });
    
  4. এজ্যাক্স কিছু (সম্ভবতঃ জেএসএন ফর্ম্যাট করা) সামগ্রী সরবরাহ করে এবং এগুলি লোডনিগ ফাংশনে স্থান দেয়।

আশা করি তা বোধগম্য হয়।


3

ইভেন্টগুলি স্ক্রোল করতে শ্রোতাদের সংযুক্ত করে বা সেটটেন্টারওয়াল ব্যবহার করে অলস চিত্রগুলি লোড করা অত্যন্ত নন-পারফরম্যান্ট হিসাবে getBoundingClientRect () এর প্রতিটি কল ব্রাউজারকে পুরো পৃষ্ঠাটিকে পুনরায় বিন্যাস করতে বাধ্য করে এবং আপনার ওয়েবসাইটে উল্লেখযোগ্য জাঙ্ক প্রবর্তন করবে।

ব্যবহারের Lozad.js (কোন নির্ভরতা সঙ্গে মাত্র 569 বাইট), যা ব্যবহার IntersectionObserver performantly অলস লোড ইমেজ।


Polyfill ক্ষেত্রে ব্রাউজার সমর্থনে পরিবর্তনশীল যোগ করা যেতে পারে উপলব্ধ নয়
Apoorv সাক্সেনা

এই দিনগুলিতে ব্রাউজার সমর্থনটি আরও অনেক ভাল - আমি কি ব্যবহার করতে পারি
হাসটিগ জুসামেনস্টেলেন


0

এই লিঙ্কটি আমার জন্য ডেমো কাজ করে

1. jQuery লাইব্রেরির পরে jQuery লোডস্ক্রোল প্লাগইনটি লোড করুন, তবে ক্লোজিং বডি ট্যাগের আগে।

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script><script src="jQuery.loadScroll.js"></script>

2. এইচটিএমএল 5 ডেটা-এসসিআর বৈশিষ্ট্য ব্যবহার করে আপনার ওয়েবপৃষ্ঠায় চিত্রগুলি যুক্ত করুন। আপনি নিয়মিত img এর src বৈশিষ্ট্য ব্যবহার করে স্থানধারকগুলি সন্নিবেশ করতে পারেন।

<img data-src="1.jpg" src="Placeholder.jpg" alt="Image Alt"><img data-src="2.jpg" src="Placeholder.jpg" alt="Image Alt"><img data-src="3.jpg" src="Placeholder.jpg" alt="Image Alt">

৩. আইএমজি ট্যাগগুলিতে প্লাগইনটি কল করুন এবং আপনার চিত্রগুলি দৃশ্যমান হওয়ার সাথে সাথে ফেডইন প্রভাবের সময়কাল নির্দিষ্ট করুন

$('img').loadScroll(500); // in ms

0

আমি jQuery অলস ব্যবহার করছি । পরীক্ষার জন্য আমার প্রায় 10 মিনিট সময় লেগেছে এবং আমার এক ওয়েবসাইটের ( কলেজেরেকেপ্যাকেজ ডটকম ) বেশিরভাগ চিত্রের লিঙ্কগুলিতে যুক্ত হতে এক বা দুই ঘন্টা সময় লেগেছে । আমি কোন (কিছুই নয় / শূন্য) ডেভ কোনো ধরনের সম্পর্ক, কিন্তু এটা আমার অনেক সময় সংরক্ষিত এবং মূলত মোবাইল ব্যবহারকারীদের জন্য আমাদের বাউন্স হার উন্নত সাহায্য করেছে এবং আমি কৃতজ্ঞ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.