исправлены скачки заголовка после прокрутки страницы вниз

#javascript #jquery #html #css

#javascript #jquery #HTML #css

Вопрос:

Я нашел несколько вопросов, похожих на этот, но они не смогли мне помочь. Когда я прокручиваю страницу вниз, заголовок / панель навигации не перемещается «плавно» вместе со страницей. После того, как я достигаю определенного уровня вниз по странице, заголовок «прыгает», но после этого все в порядке. У меня есть следующий код для фиксированного заголовка:

 $(window).scroll(function(){
    if ($(window).scrollTop() >= 147) {
    $("#top_nav").addClass("fixed");
    $("#top_nav").css("position", "fixed");
    $("#top_rule").hide();
    $("#bottom_rule").hide();
    } 
    else {
    $("#top_nav").removeClass("fixed");
    $("#top_nav").css("position", "initial");
    $("#top_rule").show();
    $("#bottom_rule").show();
    }
 });
  

Мой CSS:

 .fixed {
    width: 100%;
    background: white;
    border-bottom: 1px solid black;
    box-shadow: 0 0 20px #000000;
    top: 0px;
    padding-top: 15px;
    padding: 10px;
}
  

У меня нет position: fixed в моем CSS, потому что по какой-то причине он не работает, поэтому вместо этого я использовал jQuery для установки положения в фиксированное.

Я разместил остальную часть своей страницы на jsfiddle.net
http://jsfiddle.net/5n4pF / Если я не объяснил propelry, пожалуйста, спросите, и я постараюсь объяснить лучше 🙂
Заранее спасибо

РЕДАКТИРОВАТЬ Когда я достигаю 147 пикселей, он не должен прыгать. Это выглядит так, как будто он «скрывает и показывает». Вместо этого он должен плавно перемещаться при прокрутке страницы вниз.

Ответ №1:

Вы должны позиционировать свой заголовок абсолютно. и дайте новостям поле -увеличьте размер заголовка. Причина, по которой ваш position: fixed не работал, заключается в том, что вы исправили его внутри относительного элемента. Это исправляется внутри этого элемента (что не то, что вы хотите, потому что вы хотите, чтобы это было исправлено в верхней части страницы).

Он скачет из-за того, что вы меняете элемент со статического на фиксированный. Внезапно вы пропускаете около 53 пикселей высоты в вашем макете. Что заставляет его прыгать.

В этой скрипке:http://jsfiddle.net/5n4pF/3 /

 * {
    margin: 0px;
    padding: 0px;
}

header {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    text-align: center;
}

#black_top {
    background: black;
    font-size: 5px;
    display:block;
    width: 100%;
    height: 5px;
}

#logo_header {
    margin-top: 20px;
}

.list_item {
    list-style-type: none;
    display: inline-block;
    font: 16px Arial;
    padding: 10px 30px 10px 30px;
    text-align: center;
}

#top_nav {
    font: Arial 30px;
    display: block;
     width: 100%;
}

.nav_links {
    text-decoration: none;
    color: black;
}

hr {
    margin-right: 30px;
    margin-left: 30px;
    color: #f00;
    opacity: 0.3;
}

.nav_bullets {
    color: #D6D6D6;
}

::-moz-selection {
    background: #93E6E5;
}

::selection {
    background: #b3d4fc;
}

#news_block {
    /*Chrome amp; Safari*/
    -webkit-column-count: 3;
    -webkit-column-gap: 40px;
    /*Firefox*/
    -moz-column-count:3;
    -moz-column-gap: 40px;
    margin: 20px;
    position: absolute;
    top: 249px;
    width: 100%;
    box-sizing: border-box;
}

#search_field {
    font-size: 25px;
}

.fixed {
    width: 100%;
    box-sizing: border-box;
    background: white;
    border-bottom: 1px solid black;
    box-shadow: 0 0 20px #000000;
    top: 0;
    position: fixed;
    padding-top: 15px;
    padding: 10px;
}
  

приведен правильный код. Все еще немного глючит с шириной чего-то. Но код в целом не очень аккуратный. Итак, я оставляю эту часть вам. Надеюсь, у вас это сработает.

Комментарии:

1. О, подождите. Теперь я понимаю, что вы имеете в виду. Что ж, я отредактирую свой ответ

Ответ №2:

Я работал над этим сегодня, и я нашел решение. Измените CSS с

 .fixed-header .main-header {
    display: none;
}
  

Для

 .fixed-header .main-header {
    display: inline;
}