Показать сообщение отдельно
  #1 (permalink)  
Старый 07.05.2015, 16:33
Аспирант
Отправить личное сообщение для vettel Посмотреть профиль Найти все сообщения от vettel
 
Регистрация: 07.05.2015
Сообщений: 43

Фиксирование и открепление вертикальной навигационной панели при прокрутке
Здравствуйте.
На странице есть вертикальная панель навигации. Оформленная там, разные эффекты при наведении и т.д.
Решил сделать так, что, когда страница прокручивается до начала панели, она(панель) прикрепляется. Для того, чтобы ее всегда было видно. С этим проблем не возникло.
Но потом решил добавить кода для тех, кто изменит размер окна или масштаб. Принцип такой: если длина окна меньше длины навигационной панели, никакого прикрепления происходить не должно.
Вот код:
$(document).ready(function() {
    navVerticalShift();
});
 
$(window).resize(function() {
        navVerticalShift();
});
 
function navVerticalShift() {
    $('nav').css('position', 'static');
    var screenHeight = $(window).height();
    var topNav = $('nav').offset().top;
    var $width = $('nav').width();
    var $height = $('nav').height();
    
    if (screenHeight < $height) {
            return;
        }
    else {    
    $(window).scroll(function() {
        if ($(document).scrollTop() > topNav) {
                $('nav').css({top: '1px', position: 'fixed', width: $width + 'px'});
            }
        else {
                $('nav').css({position: 'static'});
            }
    });
    }
}


Событие window.resize добавил для тех, кто изменит масштаб страницы в браузере без обновления.

Но код в принципе не работает. При обновлении страницы - да, работает: если окно маленькое, прикрепления не происходит, если большое - происходит. Но напрямик при изменении размеров окна или масштаба - нет. Точнее, если окно стало маленькое, а потом большое - то все работает (сначала панель не прикрепляется, а при большом окне - прикрепляется).

А если окно было большое и прикрепление сработало, а потом я сделал его маленьким (или увеличил масштаб) - панель все равно остается прикрепленной. То есть нижней части панели пользователь так и не увидит.
Хотелось бы понять, в чем я ошибся и что не так делаю. Заранее благодарю.
Ответить с цитированием