2012-06-12 3 views
18

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

<div id='container'> 
    <!-- Empty but height is set to take up space to fake scrollbar --> 
    <div id='hidden-before'></div>  

    <!-- Preloaded in case the user scrolls up --> 
    <div id='preload-before'></div> 

    <!-- User can see this. Height == #container's height --> 
    <div id='viewable-section'></div> 

    <!-- Preloaded in case the user scrolls down --> 
    <div id='preload-after'></div> 

    <!-- Empty but height is set to take up space to fake scrollbar --> 
    <div id='hidden-after'></div>  
</div> 

उदाहरण के लिए Google डॉक्स बड़े टेक्स्ट दस्तावेज़ों के लिए करता है।

नोट: जो मैं खोज रहा हूं वह अनंत स्क्रॉल से अधिक जटिल है। अनंत स्क्रॉल बस आपके लिए नीचे हिट करने की प्रतीक्षा करता है और यह स्क्रॉलबार को बढ़ाकर अधिक डेटा लोड करेगा। जो मैं खोज रहा हूं, आपको लगता है कि सभी डेटा लोड हो गए हैं क्योंकि स्क्रॉलबार फिक्र हैं। जब आप नीचे हिट करते हैं, तो आपने वास्तव में उस सूची के अंत को मारा है जिसे मैं दिखाना चाहता हूं।

+0

आप अपनी सूची छोटा करने के तौर-तरीकों पर विचार करना चाहिए, वहाँ श्रेणियों में बांटा जा सकता है कर रहे हैं? आंशिक रूप से सूची लोड करने का अर्थ है कि इन-पेज खोज शायद काम नहीं करेगी, इसलिए आप उपयोगकर्ता को सूची के माध्यम से स्क्रॉल कर रहे हैं और खोज में टाइप करने के बजाए इसे मैन्युअल रूप से खोज सकते हैं। – RobG

+0

मुझे लगता है कि Google डॉक्स * पेज * पर आधारित है, जिसमें निश्चित ऊंचाई है। एक HTML सूची पर, प्रत्येक सूची आइटम की ऊंचाई को जानने के लिए कोई तरीका नहीं है, जब तक कि आप उन्हें DOM में लोड न करें। – bfavaretto

+0

@bfavaretto निश्चित है लेकिन मैं प्रत्येक सूची आइटम के लिए एक निश्चित ऊंचाई भी रख सकता हूं जिसे मैं दिखाना चाहता हूं। – jhchen

उत्तर

9

की जरूरत पर विचार करें Clusterize.js

इस प्लगइन वास्तव में करता है कि आप क्या पूछना ।

+0

पंक्तियों की गतिशील लोडिंग के साथ इस प्लगइन को कैसे गठबंधन करें? –

+1

@SouhaiebBesbes .append, .prepend या .update विधियों का उपयोग करें। दस्तावेज़ – Denis

+0

देखें [Clusterize.js] (https://www.uplabs.com/posts/clusterize-js-commercial-license) जीएनयू जीपीएल लाइसेंस v3, एकल वाणिज्यिक लाइसेंस के लिए $ 25, और विस्तारित वाणिज्यिक लाइसेंस के लिए $ 110 के तहत है । –

4

यह "अनंत स्क्रॉल" नामक एक तकनीक है, और कई पुस्तकालय इसका समर्थन करते हैं। निर्धारित करने के लिए "कितना" डेटासेट के उपयोगकर्ता वर्तमान देख सकते हैं

http://www.infinite-scroll.com/

आप जानते हैं, विचार है, और फिर के लिए एक अनुरोध करते हैं: आप jQuery का उपयोग कर रहे हैं, तो पर एक नज़र केवल इतना है, लेकिन पूरे सेट के आकार के संबंध में स्क्रॉल सेट करें। इस तरह, उपयोगकर्ता एक निश्चित बिंदु से पहले स्क्रॉल करता है, तो आप डेटासेट के अगले भाग के लिए अनुरोध कर सकते हैं।

ExtJS भी यह उनके घटक-आधारित ढांचे के हिस्से के रूप में है। यहां a grid example है।

+1

@LarryK ने अपने अब हटाए गए उत्तर पर कहा: "ध्यान दें कि क्लाइंट से पेजिनेशन अनुरोधों का समर्थन करने के लिए आपको अपने सर्वर-साइड एप्लिकेशन में बदलाव करने की आवश्यकता होगी"। – bfavaretto

+0

@bfavaretto: हाँ, यह उल्लेख करना अच्छा है। और, आपके पृष्ठ की जटिलता के आधार पर (उदा। डायनामिक सॉर्टिंग या ग्रुपिंग की आवश्यकता नहीं है), इसके लिए सर्वर-साइड संशोधन के _ बिट को थोड़ा सा आवश्यकता हो सकती है। – voithos

+0

क्षमा करें मुझे और अधिक स्पष्ट होना चाहिए था। मैंने आशा व्यक्त करने के लिए प्रश्न को अद्यतन किया है कि मैं जो खोज रहा हूं और अनंत स्क्रॉल के बीच का अंतर बताता हूं। दोबारा, Google डॉक्स जो मैं ढूंढ रहा हूं वह करता है, जिसे आपको अनंत स्क्रॉल के रूप में वर्णित नहीं किया जाएगा। – jhchen

2

क्या आपने सीएसएस में अतिप्रवाह विशेषता की कोशिश की है? बस अपने कंटेनर div को मानक चौड़ाई और ऊंचाई दें:

# कंटेनर {ऊंचाई: 500 पीएक्स; चौड़ाई: 500 पीएक्स; अतिप्रवाह: ऑटो;}

+1

बिंदु यह है कि मैं सभी HTML तत्वों को लोड नहीं करना चाहता क्योंकि मेरे पास बहुत कुछ होगा और यह धीमा हो जाएगा। मैं सिर्फ उन लोगों को लोड करना चाहता हूं जो उपयोगकर्ता देखेंगे, और दूसरों को लोड करते समय लोड करें। – jhchen

1

इस पोस्ट में अपने प्रश्न को शामिल किया गया और प्रस्तुत जवाब - http://engineering.linkedin.com/linkedin-ipad-5-techniques-smooth-infinite-scrolling-html5

हत्यारा प्लगइन आप के बाद कर रहे हैं नहीं है लेकिन बताया गया हो कि आप बनाने के बारे में जाना होगा करने के लिए एक लंबा रास्ता चला जाता है तुम्हरे द्वारा।

अद्यतन: वहाँ एक नए पुस्तकालय infinity.js कहा जाता है, अधिक जानकारी है - https://stackoverflow.com/a/12108015/921259

3

मैं एक ऐसी ही समस्या हुई थी। परिदृश्य यह था कि मेरे पास सूची में प्रदर्शित होने के लिए पहले से ही एक बड़ा (~ 400 + तत्व) था, जहां प्रत्येक तत्व का अपना दृष्टिकोण हो सकता है। उन तत्वों के लिए डीओएम का निर्माण, लेआउट और पेंटिंग स्क्रॉलिंग डीवी के अंदर पूरी सूची प्रस्तुत करने के लिए प्रयास करने की आवश्यकता से धीमी थी।

मैंने कई समाधान देखा।

इन्फिनिटीजेएस [1] जो कुछ मैं चाहता था उसके करीब था, इसके अलावा यह आवश्यक था कि सूची आइटम वाले तत्व को पहले से ही डोम में जोड़ा जा सके।

अनंत-स्क्रॉल [2] पॉल आयरिश भी दिलचस्प था, लेकिन एक विशिष्ट समस्या को हल कर रहा था जो मुझे हल करने के लिए आवश्यक था।

मेगालिस्ट [3] जो चाहता था उससे निकटतम आया। एंड्रयू (लेखक) ने पहले मोबाइल के लिए इसे डिजाइन करने का एक अच्छा काम किया है, स्पर्श समर्थन आदि के साथ।मेरे लिए एक चेतावनी यह थी कि ऐसा लगता है कि यह एक सख्त चयन सूची मॉडल मानता है और ऐसा करने के लिए एक सूची घटक से थोड़ा अधिक करता है (उदाहरण के लिए ईवेंट का आकार बदलने और स्वचालित रूप से इसे संभालने का प्रयास करने के लिए बाध्यकारी)।

इसलिए मैंने आईओएस UITableView के बाद मॉडल के आधार पर एक बेयरबोन सूची घटक लिखना शुरू किया - और जेएस-आभासी-सूची-दृश्य (vlv :-) कहा जाता है। यह एक काम प्रगति पर है और मैं उपर्युक्त पर इसकी अनुशंसा नहीं करता जब तक कि आपके पास ऐसी ही ज़रूरतें न हों जो उनसे काफी मुलाकात नहीं कर पाती हैं।

स्रोत यहां https://github.com/shyam-habarakada/js-virtual-list-view हैं।

योगदानकर्ता :-)

[1] http://airbnb.github.io/infinity/

[2] http://www.infinite-scroll.com/

[3] https://github.com/triceam/MegaList

1

आप पॉलिमर के <iron-list> का उपयोग करने में देख सकते हैं जो वास्तव में सभी डेटा का उपभोग करता है लेकिन यह केवल डोम को कुछ नोड्स को जोड़ता है और सही सामग्री को प्रदर्शित करने के लिए डेटा बाइंडिंग को संभालता है जैसे उपयोगकर्ता स्क्रॉल करता है।

मैंने इसे पहले इस्तेमाल किया है और 2000+ वस्तुओं की कस्टम सूचियों (उन वस्तुओं को जटिल कस्टम तत्व भी हैं) के साथ बहुत अच्छे परिणाम मिलते हैं जो निर्बाध रूप से स्क्रॉल करते हैं।

हालांकि मैंने इसे स्वयं नहीं किया है, हालांकि पॉलिमर टीम का दावा है कि इसे आसानी से अन्य ढांचे के साथ मिश्रित किया जा सकता है।

https://www.webcomponents.org/element/PolymerElements/iron-list