Фиксированное меню после обновления страницы

lospirata
На сайте с 24.12.2010
Offline
103
788

Здравствуйте. Фиксированное меню расположено не в самом начале страницы, а после header. Все работает прекрасно, если бы только, прокрутив чуть ниже, после обновления страницы меню может встать на то же расстояние от верха, не прижимаясь к нему.

HTML

<nav id="cssmenu">
<ul>
<li><a href="page.html">Страница</a></li>
<li><a href="page-2.html">Страница 2</a></li>
<li><a href="page-3.html">Страница 3</a></li>
</ul>
</nav>

CSS

#cssmenu {
position: fixed;
top: 186px;
height: 52px;
background: black;
width: 100%;
text-align: left;
z-index: 2;
}

JavaScript

var h_hght = 186;
var h_mrg = 0;
$(function(){
$(window).scroll(function(){
var top = $(this).scrollTop();
var elem = $('#cssmenu');
if (top+h_mrg < h_hght) {
elem.css('top', (h_hght-top));
} else {
elem.css('top', h_mrg);
}
});
});
It Can't Rain All the Time Блог вебмастера (https://lospirata.ru/)
I2
На сайте с 07.03.2015
Offline
38
#1

то есть после обновления страницы, меню прилипает к самому верху, а вам надо что бы на 186px ниже, правильно?

если так, то в else надо написать ('top', '186')

Качественная верстка PSD макетов (/ru/forum/974524)
lospirata
На сайте с 24.12.2010
Offline
103
#2

Нет, наоборот, меню на 186px ниже, при малейшей прокрутке встает как надо у верхней границы, а нужно сразу.

Gerga
На сайте с 02.08.2015
Offline
94
#3

lospirata, вот такой вариант


$(function(){
var h_hght = 186;
var h_mrg = 0;
// функция изменения положения меню
function menu_change_top_position() {
var top = $(this).scrollTop();
var elem = $('.home');
if (top+h_mrg < h_hght) elem.css('top', (h_hght-top));
else elem.css('top', h_mrg);
}
$(window).scroll(menu_change_top_position); // вызываем при скролле
menu_change_top_position(); // вызываем после загрузки страницы
});
lospirata
На сайте с 24.12.2010
Offline
103
#4
Gerga:
lospirata, вот такой вариант

Спасибо большое, работает отлично))

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий