Зафиксировать меню и сайдбар (position: sticky)

В CSS 3 для свойства position появилось новое значение «sticky», которая закрепляет элемент в пределах родительского тега.

<div class="page">
    <div class="top-panel">Фиксированная панель в пределах родительского тега .page</div>
    <!-- HTML-контент страницы -->
</div>

/* CSS */
.top-panel {
    position: sticky;
    top: 0;
}

Одно из основных преимуществ данного свойства перед position: fixed в том, что вёрстка не рушится, если элементу задать значение «sticky».

Значение «sticky» работает во всех современных браузерах (не работает в Internet Explorer, но поддерживается в Internet Edge).

Закрепить только меню, без шапки

Если при прокрутке вниз, закреплять надо только меню (без шапки), для этого также достаточно указать свойство position: sticky.

<div class="page">
    <header> ... </header>

    <div class="top-panel">Панель, которая при прокрутке будет закрепляться сверху страницы
и возвращаться на исходную позицию при прокрутке в начало страницы</div>

    <!-- HTML-контент страницы -->
</div>

Закрепить сайдбар

Чтобы закрепить сайдбар, для него также достаточно указать свойство position: sticky. При этом, сайдбар будет закреплён только в пределах своего родительского тега, т.е. он не будет вылезать, например, в подвал сайта.