JQuery Div следует во время прокрутки с промежутком сверху/снизу

Мне нужен фиксированный div при прокрутке страницы, но между верхним и нижним значением. Теперь у меня есть этот код, и он работает, но я не могу найти решение, чтобы остановить его, когда с помощью прокрутки я нахожу нижнюю часть страницы. , Я хочу, чтобы нижний зазор составлял 400 пикселей (высота моего нижнего колонтитула).

jQuery(document).ready(function () {
    var el = jQuery('#news_right_cont');
    var elpos = el.offset().top;
    var gap = 174;
    jQuery(window).scroll(function () {
        var y = jQuery(this).scrollTop();
        if (y < elpos) {
            el.stop().animate({
                'top': 174
            }, 0);
        } else {
            el.stop().animate({
                'top': y - elpos + gap
            }, 0);
        }
    });
});

Я надеюсь, что вы можете найти решение .. Спасибо


person user2030854    schedule 31.01.2013    source источник
comment
Извините, но я нашел ваш стиль кодирования трудным для чтения.   -  person Alexander    schedule 01.02.2013


Ответы (1)


Вы можете использовать следующее, чтобы узнать, достиг ли прокрутки нижней части страницы

 if (document.documentElement.clientHeight + y >= document.body.offsetHeight) {
        //add your conditions                
    }

вместо вашего, если еще

if (y < elpos) {
            el.stop().animate({
                'top': 174
            }, 0);
        } else {
            el.stop().animate({
                'top': y - elpos + gap
            }, 0);
        }

добавить следующее

if (document.documentElement.clientHeight + y + 400 < document.body.offsetHeight) {
                             el.stop().animate({ top: y - elpos + gap }, 0);
            }

Вы в основном прокручиваете только в пределах. Число 400 в `document.documentElement.clientHeight + y + 40, которое вы можете изменить в зависимости от местоположения нижнего колонтитула.

person arun    schedule 31.01.2013
comment
Спасибо, Арун.. но как я могу реализовать это в своей функции.. Я пробовал, но не могу найти решение.. - person user2030854; 04.02.2013
comment
добавил дополнительные комментарии .. дайте мне знать, если это поможет - person arun; 05.02.2013
comment
упс... нужно еще немного информации 1. поделитесь своим тегом div #news_right_cont' 2.добавьте оповещение (document.documentElement.clientHeight); предупреждение (document.body.offsetHeight); перед уром, если зациклить и поделиться номерами ур. - person arun; 05.02.2013
comment
это дает мне 749 и 0 .. div не следует за прокруткой ... теперь я очень смущен .. :) - person user2030854; 05.02.2013