Остановка прокрутки фиксированной позиции в определенной точке? - PullRequest
85 голосов
/ 05 мая 2011

У меня есть элемент, который является position: fixed и поэтому прокручивает страницу так, как я хочу. когда пользователь прокручивает вверх, я хочу, чтобы элемент прекратил прокрутку в определенный момент, скажем, когда это 250px от верхней части страницы, возможно ли это? Любая помощь или совет будут полезны, спасибо!

У меня было ощущение, что для этого мне понадобится jquery. Я попытался прокрутить или определить местоположение пользователя, но действительно запутался, есть ли какие-нибудь решения jquery?

Ответы [ 13 ]

0 голосов
/ 22 сентября 2014

Просто импровизированный код mVChr

$(".sidebar").css('position', 'fixed')

    var windw = this;

    $.fn.followTo = function(pos) {
        var $this = this,
                $window = $(windw);

        $window.scroll(function(e) {
            if ($window.scrollTop() > pos) {
                topPos = pos + $($this).height();
                $this.css({
                    position: 'absolute',
                    top: topPos
                });
            } else {
                $this.css({
                    position: 'fixed',
                    top: 250 //set your value
                });
            }
        });
    };

    var height = $("body").height() - $("#footer").height() ;
    $('.sidebar').followTo(height);
    $('.sidebar').scrollTo($('html').offset().top);
0 голосов
/ 27 июля 2013

Мне понравилось это решение

$(window).scroll(function(){
    $("#theFixed").css("margin-top",Math.max(-250,0-$(this).scrollTop()));
});

Моя проблема заключалась в том, что мне пришлось иметь дело с контейнером относительной позиции в Adobe Muse.

Мое решение:

$(window).scroll(function(){
    if($(this).scrollTop()>425) {
         $("#theRelative").css("margin-top",$(this).scrollTop()-425);
    }
});
0 голосов
/ 26 сентября 2012

Решение с использованием Mootools Framework.

http://mootools.net/docs/more/Fx/Fx.Scroll

  1. Получить позицию (x & y) элемента, где вы хотите остановить прокрутку используя $ ('myElement'). getPosition (). x

    $ ( 'MyElement'). GetPosition (). У

  2. Для анимационной прокрутки используйте:

    new Fx.Scroll ('scrollDivId', {offset: {x: 24, y: 432}}). ToTop ();

  3. Чтобы сразу установить прокрутку, используйте:

    новый Fx.Scroll (myElement) .set (x, y);

Надеюсь, это поможет! : D

...