2013-07-27 6 views
13

का उपयोग कर पृष्ठ के नीचे चलता है तो विंडो को स्वचालित रूप से स्क्रॉल कैसे करें मेरे पास 50 divs हैं, लेकिन मेरी विंडो में यह केवल 25 दिखाता है, मैं इन divs पर ड्रैग और ड्रॉप गतिविधि करता हूं। इसलिए यदि मैं अपना पहला div पास खींचता हूं 25 वें div, यह शेष div दिखाने के लिए स्वचालित रूप से स्क्रॉल करना चाहिए। मैं jquery में यह कैसे करूँ? कोई उपाय?जब माउस jquery

मैं Nestable नहीं खींचने योग्य()

+2

स्क्रॉल घटनाओं मैन्युअल रूप शुरू किया जा सकता यहां बताया गया: https://developer.mozilla.org/en-US/docs/Web/API/window.scroll हालांकि, क्योंकि आप विशेष रूप से jQuery के ड्रैग और ड्रॉप का उपयोग कर रहे हैं, मैंने सोचा था कि ब्राउजर विंडो के नीचे तत्व ने स्क्रॉल इवेंट को फिर भी ट्रिगर किया? – Ken

+0

तत्व ड्रैग पर विंडो के निचले भाग पर कब पहुंचे? – Achaius

+1

मैंने सोचा कि यह स्वचालित रूप से ऐसा करता है। http://ktstowell.github.io/angular-file-utils/#/ मैं ड्रैग का उपयोग करता हूं और यहां ड्रॉप करता हूं। जब मैं खिड़की के नीचे बाईं ओर खींचता हूं और आइटम करता हूं तो ब्राउज़र गुना के नीचे की सामग्री तक स्क्रॉल करता है। – Ken

उत्तर

11

इसे आपके विशिष्ट उपयोग मामले के आधार पर कुछ ठीक ट्यूनिंग की आवश्यकता होगी लेकिन ऐसा लगता है कि यह काफी अच्छा काम करता है।

Working Example

$('.dd').nestable({ /* config options */ 
}); 

$(window).mousemove(function (e) { 
    var x = $(window).innerHeight() - 50, 
     y = $(window).scrollTop() + 50; 
    if ($('.dd-dragel').offset().top > x) { 
     //Down 
     $('html, body').animate({ 
      scrollTop: 300 // adjust number of px to scroll down 
     }, 600); 
    } 
    if ($('.dd-dragel').offset().top < y) { 
     //Up 
     $('html, body').animate({ 
      scrollTop: 0 
     }, 600); 
    } else { 
     $('html, body').animate({ 

     }); 
    } 
}); 

संबंधित API दस्तावेज़:

+0

धन्यवाद, यह मेरी उम्मीद थी। यह स्क्रिप्ट ठीक काम करती है। आपका बहुत - बहुत धन्यवाद। – Achaius

+0

यह ईमानदारी से वास्तव में अप्रिय है। यदि मैं माउस को नीचे के चारों ओर ले जाना जारी रखता हूं, तो यह नीचे स्क्रॉल नहीं करता है क्योंकि एनिमेशन एक-दूसरे को रद्द करते हैं, और फिर यदि मैं नीचे से * दूर * वापस चला जाता हूं तो यह कुछ पूर्व निर्धारित राशि को स्क्रॉल करना शुरू कर देता है। इसके अलावा यह उस आइटम की स्थिति को अपडेट नहीं करता है जब तक आप माउस को स्थानांतरित नहीं करते हैं। – 1j01

2

आप जाँच कर सकते हैं आप विंडो के निचले भाग में जानना चाहते हैं

$(window).height() 

और $(window).scrollTop() उपयोग कर रहा हूँ;

1

मुझे पता है, यह एक पुराने विषय है लेकिन जब से इस सुविधा स्टैंडबाय में रहता है, मैं सिर्फ apaul34208 के कोड में सुधार आशा है कि यह मदद करता है

$(window).mousemove(function (e) { 
    if ($('.dd-dragel') && $('.dd-dragel').length > 0 && !$('html, body').is(':animated')) { 
     var bottom = $(window).height() - 50, 
      top = 50; 

     if (e.clientY > bottom && ($(window).scrollTop() + $(window).height() < $(document).height() - 100)) { 
      $('html, body').animate({ 
       scrollTop: $(window).scrollTop() + 300 
      }, 600); 
     } 
     else if (e.clientY < top && $(window).scrollTop() > 0) { 
      $('html, body').animate({ 
       scrollTop: $(window).scrollTop() - 300 
      }, 600); 
     } else { 
      $('html, body').finish(); 
     } 
    } 
}); 
+0

यह अन्य एनिमेशन को रद्द करने को हल करता है, लेकिन अभी भी बहुत अच्छा नहीं है। संक्रमण nonlinear है, तो यह sorta शुरू होता है और यह मानता है कि आप स्क्रॉल-डाउन क्षेत्र के चारों ओर माउस ले जा रहे हैं। यदि आप एनीमेशन को खत्म करते समय माउस को चारों ओर नहीं ले जा रहे हैं तो जब तक आप एक पिक्सेल नहीं ले जाते, तब तक स्क्रॉलिंग बंद कर देंगे, भले ही आपने स्क्रॉल-डाउन एरिया पर रुक दिया हो और माउस को इससे दूर ले जाना शुरू कर दिया हो। – 1j01

संबंधित मुद्दे