Задать вопрос
r45her
@r45her
HTML-верстальщик / Frontend разработчик

Как сделать блочный скроллинг с фиксированной шапкой?

Ребята, буду очень благодарен, если подскажете решение.

Нужно реализовать страницу со следующим функционалом:

  1. Шапке задан position: fixed и фиксированная высота (например, 85px);
  2. Высота каждого блока равна высоте вьюпорта (экрана) минус высота шапки;
  3. Поблочный скроллинг (например, как здесь).


При этом всё должно работать корректно. Шапка не должна скрывать контент. Между блоками не должно быть пустого пространства. Если блок переполнен контентом, то он должен вытягиваться. При этом внутри блока прокрутка должна работать как обычно. Например, такое предусматривает этот плагин.

Ребят, кто с таким сталкивался? Выручайте. Уже 3 раза голову сломал.

073e83aa261f4abf8f867263c87b3a53.gif
  • Вопрос задан
  • 1652 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
Попробуйте fullpage.js -- https://github.com/alvarotrigo/fullPage.js/

В опциях можно задать верхний отступ для каждого экрана (ставите равной высоте меню).
Например,
$('#fullpage').fullpage({
        paddingTop: '85px',
        verticalCentered: false,
        scrollOverflow: true,
});
Ответ написан
@Laweb
Веб-разработчик
Возможно этот пример подойдёт, если я правильно понял задачу.
https://youtu.be/RX5kFtUI7q0
Ответ написан
Комментировать
@Dimasc
Может вы искали что-то подобное

document.querySelectorAll('a[href^="#"').forEach(link => {

link.addEventListener('click', function(e) {
e.preventDefault();

let href = this.getAttribute('href').substring(1);

const scrollTarget = document.getElementById(href);

const topOffset = document.querySelector('.header').offsetHeight;
// const topOffset = 0; // если не нужен отступ сверху
const elementPosition = scrollTarget.getBoundingClientRect().top;
const offsetPosition = elementPosition - topOffset;

window.scrollBy({
top: offsetPosition,
behavior: 'smooth'
});
});
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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