2011-07-25 4 views
8

मेरे पास एक ओवरले बॉक्स है जो स्क्रीन पर तय और केंद्रित है। पृष्ठ स्वयं लंबा है और एक लंबवत स्क्रॉलबार है।jQuery/CSS: निश्चित ओवरले पृष्ठभूमि की स्क्रॉलिंग की अनुमति नहीं देनी चाहिए?

ओवरले दिखाए जाने के बाद मैं पृष्ठ की स्क्रॉलिंग को अक्षम करना चाहता हूं। हालांकि मैं स्क्रॉल को पूरी तरह अक्षम नहीं कर सकता क्योंकि कुछ ओवरले में overflow-y:scroll स्वयं के लिए है। इसलिए ओवरले में सामग्री को स्क्रॉल किया जाना चाहिए, लेकिन पेज स्वयं ही अटक जाना चाहिए।

किसी भी विचार को jquery या css के साथ हल करने का तरीका है?

+0

मुझे लगता है कि आपका मतलब है 'ओवरफ्लो-वाई: स्क्रॉल' और नहीं 'ओवरफ्लॉक्स-वाई' ;-) – reporter

+0

जेप! :) ठीक कर दिया। धन्यवाद। – matt

उत्तर

7

सबसे तेज़ और गंदे तरीके से मैं सोच सकता हूं कि स्क्रॉल ईवेंट के लिए विंडो में इवेंट श्रोता संलग्न करना है, और यदि आपका ओवरले दिखाई दे रहा है तो रोकें Default()।

ऐसा (jquery का उपयोग करके)।

window.addEventListener('scroll', function(e){ 
     var el = $('.overlay.active'); 

     if(el.length > 0){ 
      e.preventDefault(); 
     } 
    }); 

आशा है कि यह आपकी तलाश है।

+0

'e.preventDefault(); 'मेरे लिए विंडो स्क्रॉल के लिए काम नहीं करता है। – certainlyakey

0

आप अपने ओवरले को {position: fixed;} के रूप में स्थान दे सकते हैं। यह keep your overlay in your screen होगा भले ही आपका पृष्ठ स्क्रॉल हो।

+0

हाँ, यह पहले से ही मामला है! :) मुझे आश्चर्य है कि मैं शेष पृष्ठ को स्क्रॉलिंग से कैसे रोक सकता हूं। ओवरले को रखा जाता है, लेकिन मैं अभी भी अपनी स्क्रोलव्हील का उपयोग कर सकता हूं और निश्चित ओवरले के पीछे सामग्री को स्क्रॉल कर सकता हूं। – matt

+1

अच्छी तरह से, उस मामले में आप बुरा हैक्स का उपयोग कर सकते हैं। क्या आपने शरीर के 'ओवरफ्लो' को 'छुपा' में बदलने की कोशिश की? – jrharshath

+2

समस्या यह है कि स्क्रॉलबार गायब होने के बाद पृष्ठ कुछ पिक्सेल कूदता है। कोई अन्य विचार? शायद jquery के साथ? – matt

3

आप body से overflow: hidden पर सेट कर सकते हैं। यह स्क्रॉलिंग को रोक देगा। बच्चे की अतिप्रवाह घोषणाएं अप्रभावित रहती हैं। मैंने थोड़ा fiddle किया है।

+2

काम करता है समस्या यह है कि स्क्रॉलबार छुपाए जाने के बाद पृष्ठ कूद जाएगा – matt

+0

मैंने किसी भी समाधान के बारे में सोचा था जो स्क्रॉलिंग – matt

+0

स्क्रॉल करने से ऑनस्कोल हैंडलर को रोकता है, यह ओवरले स्क्रॉल करने योग्य रखने में पूरी तरह से काम करता है लेकिन शरीर स्क्रॉल नहीं करेगा और भी .. बढ़िया! – Tigraine

0

आप position: fixed के साथ एक पूर्ण चौड़ाई और पूर्ण ऊंचाई कंटेनर बना सकते हैं। और इस कंटेनर के अंदर जानकारी के साथ अपना वास्तविक ओवरले बनाएं। कंटेनर मूल रूप से उपयोगकर्ता को स्क्रॉल या पृष्ठ से बातचीत करने से अंधा कर देता है।

1

बस मार्क के jQuery समाधान के लिए एक समायोजन। मेरा कोड शरीर स्क्रॉल को ओवरले के रूप में अक्षम करता है, फिर जब शरीर या ओवरले बंद बटन क्लिक किया जाता है, तो शरीर स्क्रॉल पुनः सक्षम होता है।

/*We disable the scroll*/ 

$(function() { 
/*This is where we specify what button is being clicked to open the 
overlay, change at will.*/ 
$('#overlay1').click(function() {  
/*This is where we specify what part of the page is gonna disable the 
scroll, in this case the body.*/ 
    $('body') 
     .css('overflow', 'hidden'); 
    }); 

/*Now we re-enable the scroll*/ 

/*This is where we specify the the part of the overlay that is being 
clicked to close it, in this case, the body and the .close, change at will.*/ 
$('body, .close').click(function() { 
/*This is where we specify the part of the page we are re-enabling 
the scroll, in this case the body.*/ 
    $('body') 
     .css('overflow', 'visible'); 
    }); 
}); 

मेरी स्क्रिप्ट में कार्रवाई में थोड़ा JSFiddle है।

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

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