Как срабатывает resize() в данном примере?

Друзья, помогите разобраться, а то виски уже поседели...
Верстаю адаптивный макет. При ширине экрана <768 панель навигации скрывается и вызывается только по клику по гамбургеру. С этим проблем нет.
Далее. При ширине >768 и при прокрутке, при достижении определенной высоты панели навигации присваивается position: fixed, т.е. она остается приклеенной к верху страницы. Соответственно, подобное поведение мне требуется только при ширине от 768. Так вот - как сделать так, чтобы при достижении <768, без перезагрузки, этой проклятой панели навигации переставал присваиваться position: fixed?

Вот собственно, код, который не срабатывает:
function floatNavbar() {
		$(window).scroll(function() {
                        // Если скролл больше высоты хидера
			if ($(window).scrollTop() >= $(".header").outerHeight()) {
                                // Присвоить навбару вот это:
				$(".navbar").css("position", "fixed");
			} else {
                                // Иначе - вернуть исходное значение
				$(".navbar").css("position", "");
			}
		});
	}

	// При загрузке - в зависимости от ширины экрана - срабатывает или не срабатывает floatNavbar()
	if ($(window).width() >= 768) {
		floatNavbar();
	}

        // А вот при ресайзе - floatNavbar() срабатывает всегда, хотя, казалось бы, не должен...
        // и панель навигации - хоть в свернутом, хоть в развернутом виде
        // упрямо прилипает к верху страницы
	$(window).resize(function() {
		if ($(window).width() >= 768) {
			floatNavbar();
		}
	});


Что делать, и кто виноват?
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
Zhuroff
@Zhuroff Автор вопроса
var scrollTop = $(window).scrollTop();
var headerHeight = $(".header").outerHeight();
var windowWidth = $(window).width();

if (scrollTop >= headerHeight && windowWidth >= 768) {

} else {

}

Спасибо Сергею.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы