2013-07-27 15 views
6

यह सवाल शायद यहां कई लोगों के लिए बेवकूफ हो सकता है। मैं शुद्ध जेएस में स्क्रॉल के बाद चिपचिपा div बना रहा हूँ। कुछ लोग इसे jQuery में बनाने की सलाह दे सकते हैं लेकिन मुझे इसमें रूचि नहीं है। मुझे जो चाहिए वह this जैसा कुछ है। यहां div सभी तरह से शीर्ष पर चलता है लेकिन मुझे 60px शीर्ष होने की आवश्यकता है। मैंने एक स्क्रिप्ट बनाई लेकिन यह काम नहीं कर रहा है। क्या कोई इसे हल करने में मेरी सहायता कर सकता है?स्क्रॉल के बाद जावास्क्रिप्ट चिपचिपा div

मेरा कोड यहां है।

एचटीएमएल

<div id="left"></div> 
<div id="right"></div> 

सीएसएस

#left{ 
    float:left; 
    width:100px; 
    height:200px; 
    background:yellow; 
} 

#right{ 
    float:right; 
    width:100px; 
    height:1000px; 
    background:red; 
    margin-top:200px; 
} 

जे एस

window.onscroll = function() 
{ 
    var left = document.getElementById("left"); 



    if (left.scrollTop < 60 || self.pageYOffset < 60) { 
     left.style.position = 'fixed'; 
     left.style.top = '60px'; 
    } else if (left.scrollTop > 60 || self.pageYOffset > 60) { 
     left.style.position = 'absolute'; 
     left.style.margin-top = '200px'; 
    } 

} 

यह मैं क्या हासिल करने की जरूरत है। बाएं div में पृष्ठ लोड पर margin-top:200px और position:absolute होना चाहिए। उपयोगकर्ता स्क्रॉल पृष्ठ पर, बाएं div स्क्रॉल करना चाहिए और जब यह top:60px; तक पहुँच जाता है में अपनी स्थिति और मार्जिन टॉप position:fixed में बदल जानी चाहिए और margin-top:60px;

यहाँ FIDDLE

+1

जावास्क्रिप्ट केस-संवेदी है। 'document.getElementByID' गलत है। यह 'document.getElementById' होना चाहिए। और उस लाइन के अंत में आपके पास एक दुष्ट ''है। और आपने 'बाएं' नामक चर को परिभाषित नहीं किया है। आप शायद उपरोक्त टिप्पणीकर्ता के फिक्स के साथ एक निश्चित संस्करण के लिए स्ट्रिंग '" बाएं "' – Ian

+0

http://jsfiddle.net/bud4S/1/ देखें। – mash

+0

अभी भी – Kishore

उत्तर

14

सीएसएस

#left { 
    float:left; 
    width:100px; 
    height:200px; 
    background:yellow; 
    margin:200px 0 0; 
} 
#left.stick { 
    position:fixed; 
    top:0; 
    margin:60px 0 0 
} 

जोड़ा है एक छड़ी वर्ग, इसलिए जावास्क्रिप्ट को बहुत अधिक काम नहीं करना पड़ता है।

जे एस

// set everything outside the onscroll event (less work per scroll) 
var left  = document.getElementById("left"), 
    // -60 so it won't be jumpy 
    stop  = left.offsetTop - 60, 
    docBody = document.documentElement || document.body.parentNode || document.body, 
    hasOffset = window.pageYOffset !== undefined, 
    scrollTop; 

window.onscroll = function (e) { 
    // cross-browser compatible scrollTop. 
    scrollTop = hasOffset ? window.pageYOffset : docBody.scrollTop; 

    // if user scrolls to 60px from the top of the left div 
    if (scrollTop >= stop) { 
    // stick the div 
    left.className = 'stick'; 
    } else { 
    // release the div 
    left.className = ''; 
    } 
} 

WORKING JSFIDDLE

+0

धन्यवाद यह वही है जो मैं चाहता था। – Kishore

+0

बहुत बढ़िया! इसके लिए शुक्रिया! –

+0

@WillemEllis खुश है कि आपको यह सहायक पाया –

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