2011-01-13 8 views
31

का उपयोग मैं निम्नलिखित सीएसएससामग्री के साथ क्षैतिज स्क्रॉल करने के लिए मुझे एक निश्चित स्थिति div कैसे प्राप्त करें? jQuery

.scroll_fixed { 
    position:absolute 
    top:210px 

} 
.scroll_fixed.fixed { 
    position:fixed; 
    top:0; 
} 

मैं निम्नलिखित jQuery कोड का उपयोग कर रहा है जब div पेज के शीर्ष तक पहुँच जाता है .fixed वर्ग सेट करने के लिए के साथ एक div.scroll_fixed है।

var top = $('.scroll_fixed').offset().top - parseFloat($('.scroll_fixed').css('margin-top').replace(/auto/, 0)); 

$(window).scroll(function (event) { 
    // what the y position of the scroll is 
    var y = $(this).scrollTop(); 

    // whether that's below the form 
    if (y >= top) { 
     // if so, ad the fixed class 
     $('.scroll_fixed').addClass('fixed'); 
    } else { 
     // otherwise remove it 
     $('.scroll_fixed').removeClass('fixed'); 
    } 
}); 

यह लंबवत स्क्रॉल फिक्सिंग के लिए बहुत अच्छा काम करता है। लेकिन एक छोटी ब्राउज़र विंडो के साथ, क्षैतिज स्क्रॉलिंग इस निश्चित div के दाईं ओर सामग्री के साथ एक संघर्ष का कारण बनता है।

मैं div को क्षैतिज सामग्री के साथ स्क्रॉल करना चाहता हूं।

क्या कोई मुझे सही दिशा में इंगित कर सकता है। अभी भी मेरे पैर जेएस/JQuery के साथ गीला हो रही है।

मैं मूल रूप से इसे example में दूसरे बॉक्स की तरह काम करना चाहता हूं।

उत्तर

23

डेमो तत्व के position:fixed रखने और तत्व की left संपत्ति से छेड़छाड़ कर रहा है:

var leftInit = $(".scroll_fixed").offset().left; 
var top = $('.scroll_fixed').offset().top - parseFloat($('.scroll_fixed').css('margin-top').replace(/auto/, 0)); 


$(window).scroll(function(event) { 
    var x = 0 - $(this).scrollLeft(); 
    var y = $(this).scrollTop(); 

    // whether that's below the form 
    if (y >= top) { 
     // if so, ad the fixed class 
     $('.scroll_fixed').addClass('fixed'); 
    } else { 
     // otherwise remove it 
     $('.scroll_fixed').removeClass('fixed'); 
    } 

    $(".scroll_fixed").offset({ 
     left: x + leftInit 
    }); 

}); 

leftInit का उपयोग करते हुए खाते में एक संभव बाईं मार्जिन लेता है। इसे आजमाएं: http://jsfiddle.net/F7Bme/

+0

धन्यवाद, यह मूल रूप से कार्यक्षमता है जो मैं चाहता हूं। दुर्भाग्य से मेरे पास एक निश्चित चौड़ाई केंद्रित कंटेनर में घोंसला है। एक बार। लेफ्ट में फिक्स्ड क्लास किक्स सभी गड़बड़ हो जाता है। निश्चित div अब विंडो आकार बदलने पर केंद्रित लेआउट के आंदोलन का पालन नहीं करता है। यकीन नहीं है कि मैं इसके आसपास नहीं जा सकता। मेरी प्रतिक्रिया देखें [http://jsfiddle.net/35nyK/2/](http://jsfiddle.net/35nyK/2/)। जब आपका पहला भार और लाल बॉक्स का आकार बदलने का प्रयास ठीक से चलता है। एक बार जब आप स्क्रॉल करते हैं और आकार बदलने का प्रयास करते हैं, तो लेआउट सब गड़बड़ हो जाता है। क्या उस केंद्रित कंटेनर के सापेक्ष स्थिति को संभालने के लिए वैसे भी है? – jfeust

+0

@ जेफस्ट: दिलचस्प, मैं इसके साथ खेलूँगा और देखें कि मैं किसके साथ आ सकता हूं। –

+0

कमाल, बहुत बहुत धन्यवाद –

21

आप शायद अब तक चले गए हैं, लेकिन यहां किसी और के लिए एक क्षैतिज स्क्रॉल करने योग्य निश्चित तत्व समाधान की तलाश है। यह jquery प्लगइन इस सटीक समस्या को हल करने के लिए बनाया गया था।

यह डेमो एक शॉपिंग कार्ट सारांश का उपयोग करता है जो पृष्ठ के शीर्ष पर तय होने पर क्षैतिज रूप से स्क्रॉल करेगा;

डेमो:: http://jsfiddle.net/y3qV5/434/ (अद्यतन)

प्लगइन और स्रोत: https://github.com/bigspotteddog/ScrollToFixed

उपयोग:

$(document).ready(function() { 
    $('#cart').scrollToFixed({ marginTop: 10 }); 
}); 
+2

jsfiddle काम नहीं करता है (क्रोम 28.0.1500.71) –

+0

ऊपर जेएसफ़ील्ड क्रोम 29.0.1547 पर बेकार ढंग से काम करता है।66, इसलिए क्रोम में गड़बड़ी तय की गई थी मुझे लगता है कि – Dejv

8

उपयोग सीएसएस संपत्ति position:sticky और, मैं भी सारणीबद्ध डेटा के ऊपर एक शीर्ष लेख में इसका उपयोग किया इसे पाने के लिए।

यहां आलेख समझाया गया है और लाइव डेमो है।

http://updates.html5rocks.com/2012/08/Stick-your-landings-position-sticky-lands-in-WebKit

केवल दोष यह ब्राउज़र संगतता है।

+3

आज तक, चिपचिपा डेमो नवीनतम Google क्रोम में भी काम नहीं करता है, इसलिए यह अब उपयोगी उत्तर प्रतीत नहीं होता है। अच्छा लिंक लेकिन मैं मतदान कर रहा हूं -1 – xmojmr

+0

'स्थिति: चिपचिपा;' एक साफ समाधान है। अच्छी पॉलीफिल हैं जो इसे क्रोम में भी काम करती हैं। – Duvrai

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