2016-02-25 3 views
0

Хорошо, так как в вопросе говорится, что у меня есть элемент, установленный на точку, но по причинам, мне нужно, чтобы он немного прокручивался, а затем останавливался на другой фиксированной точке. Мой друг немного помог мне с кодом, но ни один из нас не является профессионалом в Javascript, поэтому подобные вопросы не помогли мне разобраться в этом. Мой код теперьКак сделать прокрутку элемента после определенной точки?

function absToFix() { 
    var udaljenost = $(window).scrollTop(); 
    var sideb = $('#sidebar').offset().top; 
    var distance = (sideb - udaljenost); 
    return distance; 
} 
$(document).ready(function() { 
    var distance = absToFix(); 
    $(window).scroll(function() { 
    distance = absToFix(); 
    if (distance < 220) { 
     $('#sidebar').css({ 
     position: 'fixed', 
     top: '220px' 
     }); 
    } else { 
     $('#sidebar').css({ 
     position: 'absolute', 
     top: '340px' 
     }); 
    } 
    }); 
}); 

Обычно это работает, в том смысле, что он стоит там, где оно должно быть, и это останавливает прокрутку, где он должен, однако при дальнейшей прокрутке он просто продолжает мелькать между фиксированной точкой и просто прокрутками вверх , и я действительно не знаю, как остановить это.

ответ

0

вы можете использовать эти функции:

function disableScroll() { 
    if (window.addEventListener) // older FF 
     window.addEventListener('DOMMouseScroll', preventDefault, false); 
    window.onwheel = preventDefault; // modern standard 
    window.onmousewheel = document.onmousewheel = preventDefault; // older browsers, IE 
    window.ontouchmove = preventDefault; // mobile 
    document.onkeydown = preventDefaultForScrollKeys; 
} 

    function enableScroll() { 
     if (window.removeEventListener) 
      window.removeEventListener('DOMMouseScroll', preventDefault, false); 
     window.onmousewheel = document.onmousewheel = null; 
     window.onwheel = null; 
     window.ontouchmove = null; 
     document.onkeydown = null; 
    } 

$(document).ready(function() { 
    var distance = absToFix(); 
    $(window).scroll(function() { 
    distance = absToFix(); 
    if (distance < 220) { 
     disableScroll(); 
    } else { 
     $('#sidebar').css({ 
     position: 'absolute', 
     top: '340px' 
     }); 
    } 
    }); 
}); 
+0

Спасибо, но, к сожалению, не работает; боковая панель просто прокручивается гладко, но не останавливается? – insertwittynamehere