2015-04-24 5 views
9

पर मैं ऐसा करने के तरीके कैसे के लिए एक नुकसान का एक सा पर कर रहा हूँ।पुस्तक पेज तो certian स्थिति स्क्रॉल तत्व

मैं एक वेब पेज है। मैं चाहता हूं कि उपयोगकर्ता नीचे स्क्रॉल करें, फिर शीर्ष से एक विशिष्ट दूरी पर मैं माउस स्क्रॉल को तत्वों की स्थिति को प्रभावित करने के लिए चाहता हूं (ऐसा लगता है कि तत्व स्क्रॉल कर रहा है)। तब जब वह तत्व किसी स्थिति को हिट करता है (यानी शीर्ष: -500) मैं स्क्रॉल को मुख्य वेबपृष्ठ पर फिर से लागू करना चाहता हूं। इस पर कोई विचार है कि मैं यह कैसे कर सकता हूं?

इम एक बेला पर काम कर, लेकिन किसी भी भाग्य नहीं होने, मैं जब मैं दिखाने के लिए

संपादित कुछ है पोस्ट करेंगे: एक समाधान/sudo कोड https://jsfiddle.net/vk0jk37v/23/

संलग्न की शुरुआत एक की एक छवि है वह क्षेत्र जिसमें मैं इसे लागू कर रहा हूं।

//pageFeature.style.backgroundPosition = "0px " + parseInt(-y/6) + 'px'); 

var element = document.getElementById('container').getBoundingClientRect(); 
var elementTop = element.top //distance from top 720; 

// variable to stop function from being replayed on scroll when scrolling image 
var isScrollingImage = false; 

// disables scroll on body 
var disableScroll = function() { 
    document.body.style.overflow='hidden'; 
} 
// enables scroll on body 
var enableScroll = function() { 
    document.body.style.overflow='auto'; 
} 
//change position of background along y axis with scroll 
var scrollImage = function() { 
    console.log("called"); 
    isScrollingImage = true; 
    var pageFeature = document.getElementById("inner"); 
    var pageFeaturePosition; 
    pageFeature.style.backgroundPositionY=parseInt(-scrollY/10) + "px"; 
    //if (background is scrolled to bottom) { 
    // enableScroll(); 
    // } 
} 

//when element gets to center of viewport and animation is scroll is not on element 
//call scrollImage() 
function checkPosition() { 
    if (scrollY > 720 && !isScrollingImage) { 
     disableScroll(); 
     scrollImage(); 
    } 
    //isScrollingImage = false; 
} 

//once out of view port will have to bring the image back down, 
//scroll image will only happen on the way down 

document.addEventListener('scroll', checkPosition); 

enter image description here

+0

आप Onscroll घटना का उपयोग करें और एक बार है कि आवश्यक जगह पर तत्वों स्थिति की जांच कर सकते हैं। आप पृष्ठ को अपनी स्थिति – Panther

+0

पर वापस स्क्रॉल कर सकते हैं क्या आपने 45 मिनट पहले ऐसा नहीं पूछा था? । किसी ने उत्तर पोस्ट करने के मामले में कम से कम उत्तर जांचें। और शीर्षक बदलने से कोई प्रश्न कम डुप्लिकेट नहीं होता है –

+0

हाय अलवरो, मैं अभी अपने अंतिम प्रश्न का उत्तर देख रहा हूं और एक मिनट में वहां पोस्ट करूंगा। दूसरे प्रश्न में मैं एक सीएसएस समाधान की तलाश में हूं और इस के साथ मैं एक जेएस समाधान की तलाश में हूं। मैं अपने लेआउट से चिंतित हूं मुझे ऐसा करने के लिए एक जेएस का उपयोग करना पड़ सकता है (मैं इसे एक और संदर्भ में लागू कर रहा हूं)। दूसरे प्रश्न में एक महान प्रतिक्रिया के लिए धन्यवाद। वह करने के लिए बात कर रहा है रुचि किसी के लिए भी http://stackoverflow.com/questions/29852865/allow-scroll-of-div-set-behind-another-div – ReganPerkins

उत्तर

3
var thresholdY = 150; 
    var thresholdCounter = 0; 
    var speed = 4; 
    var element = document.getElementById('yourElement'); 

    window.onscroll = function(event) { 
     if(scrollY > thresholdY) { 
     window.scrollTo(0, thresholdY); 
     element.setAttribute('style', 'transform:translate3d(0,' + (--thresholdCounter * speed) + 'px,0);'); 
     return false; 
     } 
     return null; 
    }; 

यहाँ एक डेमो है: https://jsfiddle.net/pkt6xnb5/

विचार यहाँ है कि तुम जगह में खिड़की रखने के जब उपयोगकर्ता एक निश्चित सीमा से Y स्थिति तक पहुँचता है। इसके अलावा उस समय हम इसके वाई अक्ष के साथ तत्व को विपरीत दिशा में बदलते हैं, जहां उपयोगकर्ता इसे आगे बढ़ने के लिए आगे बढ़ने के लिए स्क्रॉल कर रहा है। क्या आप यही खोज रहे हैं?

+0

हाय बेनी मुझे लगता है कि यह काम करेगा यह करने के लिए हो रही है पर, मैं सिर्फ काम कर मेरे बेवकूफ में काम करें (मुझे स्क्रॉल की आवश्यकता है माउस/टैब द्वारा नियंत्रित करने के लिए केवल एक एनीमेशन नहीं बल्कि मुझे लगता है कि तर्क काम करेगा)। जब मैं इसे काम कर रहा हूं तो मैं जवाब को सही के रूप में चिह्नित करूंगा। धन्यवाद! – ReganPerkins

+0

@ रेगनपर्किन्स आह ठीक है, ऐसा करने के लिए शायद कुछ तरीके हैं। मैंने इसका परीक्षण नहीं किया है, लेकिन ऐसा लगता है कि इसे काम करना चाहिए (उत्तर संपादित किया गया) – Benny

+0

@ रेगनपर्किन्स ठीक है मेरे पास कंप्यूटर आने का समय था और अब मुझे एहसास हुआ कि यह थोड़ा और जटिल है। इस बेला आप जो चाह रहे हैं के लिए काम करना चाहिए, लेकिन आप (यदि है कि तुम क्या चाहते हो) यह रिवर्स में काम करने के लिए के लिए भी अतिरिक्त तर्क लिखने के लिए होगा: https://jsfiddle.net/pkt6xnb5/ – Benny

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