@testkeyc

Как сделать отступ при скроле страницы?

На сайте сделал плавный скролл для блоков. На сайте используется верхнее плавающее меню и из-за этого при скролле до блока получается так, что оно наезжает на заголовки. Подскажите, как задать отступы при скролле в несколько пикселей от блока?

const anchors = document.querySelectorAll('a[href*="#"]');

for( let anchor of anchors) {
	anchor.addEventListener("click", function(e){
		e.preventDefault();
		const blockID = anchor.getAttribute('href')
		document.querySelector('' + blockID).scrollIntoView({
			behavior: "smooth",
			block: "start",
		})
	})
}
  • Вопрос задан
  • 2717 просмотров
Решения вопроса 2
Athanor
@Athanor
Лайк + Решение: не жмись, нажми
Самый простой способ: сделать скролл в 2 шага и после scrollIntoView вызывать доскрол на нужное кол-во пикселей, типа такого
window.scrollBy({
  top: -10,
  left: 0,
  behavior: 'smooth'
}); //

Но если хотите плавности, вам придется, вероятно, отказаться от scrollIntoView, получать координаты верхушки вашего anchor, менять их на нужное кол-во пикселей и вызывать window.scrollTo, передавая туда координаты в параметр top

Добавил демо
Ответ написан
hzzzzl
@hzzzzl
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mevCode
@mevCode
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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