Как правильно закрепить header?

254
12 декабря 2016, 10:08

Работал вот в таком направлении:

/**
 * Прилипающий хеадер
 */
var sticky = $('.navbar-fixed-top');
var defTop = sticky.offset().top;
scrollSticky(sticky, defTop);
$(window).on('resize', function () {
    scrollSticky(sticky, defTop);
});
$(window).on('scroll', function () {
    scrollSticky(sticky, defTop);
});
function scrollSticky(sticky, defTop) {
    if (defTop - ($('body').scrollTop() || $('html').scrollTop()) <= 0) {
        sticky.addClass("sticky-header-play");
        sticky.css("top", $(window).scrollTop() + "px");
    } else {
        sticky.removeClass("sticky-header-play");
    }
}

Все работает все хорошо, за исключением, что на телефонах и в сафари прилипающая шапка не статична, как бы догоняет скролл. Тоесть если прокрутить страницу хеадер догонит нужное место где-то через пол секунды. Такое происходит только на телефонах и в сафари.

Если вы хотите предложить что то типа:

position: fixed 

То это максимально плохое решение, так как при следующих стилях:

.navbar {
    width: 100%;
    min-width: 980px;
    height: 42px;
    position: fixed;
    z-index: 99;
    top: 0px;
    left: 0px;
    padding: 0px;
    background: linear-gradient(to bottom, #4D8EC2 0px, #4989BF 100%) repeat scroll 0% 0% transparent;
}

если сжать страницу до появления нижнего скрола, все что будет в хеадере за рабочей областью будет обрезано.

Собственно подскажите пожалуйста как решить проблему?

Answer 1

Этот CSS совершенно нормален.

position: fixed;
z-index: 99;
top: 0px

Так даже в Twitterе сделана эта же верстка.

Чтобы понять почему преждевременная оптимизация зло возьмите httpd-access-log какого-нибудь среднего сайта и посчитайте число User-Agents. Их там будет несколько тысяч если не больше.

Все еще думаете что пытаться сделать сайт который выглядит совершенно одинаково на них всех это здравая идея?

И да, прикрепленная панель в большинстве случаев не нужна. Зачем навязывать кому-то какой-то кусок интерфейса?

Answer 2

Нашел вот такой плагин: https://github.com/bigspotteddog/ScrollToFixed Вроде все решает, не идеально, но лучшее, что есть.

READ ALSO
JQuery onclick() последовательное изменение css

JQuery onclick() последовательное изменение css

Нужно чтобы, после нажатия на иконку ширина некого divcontent становилась 1000px, после повторного нажатия на иконку, размер div-а должен становиться...

234
Не работают табы bootstrap - почему?

Не работают табы bootstrap - почему?

Здравствуйте! Хочу настроить переключение табов в бутстрап, но вкладки не переключают текст - почему? Код ниже:

987
Валидация checkbox

Валидация checkbox

Всем приветНужно проверить отмечен ли checkbox на странице и убрать атрибут у submit - disabled

244