если расстояние между двумя элементами меньше, чем X, сделайте Y

0

Я пытаюсь вычислить расстояние между нижним колонтитулом веб-сайта и боковой панелью (у которой есть свойство переменной margin-top, которое имитирует элемент фиксированной позиции).

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

Я пробовал приведенный ниже код (который находится внутри функции прокрутки окна), но это возвращает отрицательное число & работает не так, как ожидалось.

        distance = sidebar.offset().top - footer.offset().top;

        console.log(distance);

        if ( distance > -500) {
            sidebar.fadeOut('fast');
        } else {
            sidebar.fadeIn('fast');
        }  
Теги:
offset

1 ответ

1
Лучший ответ

Попробуй это.

$(window).scroll(function() {
//changed order, now you won't get negative number
distance = (footer.offset().top - footer.outerHeight() ) - sidebar.offset().top;

if( distance <= 50 ) // 50 or any distance you want
 sidebar.fadeOut(500);
else
 sidebar.fadeIn(500);

});

Добавлена эта часть внутри $(window).scroll() чтобы она проверялась каждый раз при прокрутке.

  • 0
    Кажется, это работает, но похоже, что он рассчитывает расстояние от нижнего колонтитула, а не от верхнего. Должно ли смещение не начинаться с вершины элемента?
  • 0
    Я не уверен в этом, но если это проблема, я отредактирую ответ, чтобы исправить эту проблему (вычитая высоту нижнего колонтитула).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню