@AlinaHeldman

Как сделать плавный переход к якорю(верстка)?

просто ничего не работает из того, что я находил. ни smooth, ни скрипты, ничего...
  • Вопрос задан
  • 517 просмотров
Пригласить эксперта
Ответы на вопрос 3
BornToFreeFall
@BornToFreeFall
Sielu ilman ihmistä
Например, вот так:

html {
    scroll-behavior: smooth;
}


Но есть одна побочка, что не все браузеры поддерживают такой подход. Зато без JS)

Либо с элементами небольшого JS кода:

// Проходимся по всем элементам "linkList", и делаем выборку по ссылкам (a с атрибутом href, который равен "#")
const anchors = document.querySelectorAll('.linkList a[href*="#"]')

for (let anchor of anchors) {
  anchor.addEventListener('click', function (e) {
  e.preventDefault()
   
  const blockID = anchor.getAttribute('href').substr(1)
   
  document.getElementById(blockID).scrollIntoView({
  behavior: 'smooth',
  block: 'start'
  })
  })
}
Ответ написан
shap3n
@shap3n
ASP .NET Developer
Можете посмотреть FullPage . js
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега CSS
{PHP, MySql, HTML, JS, CSS} developer
Решение на жквери + ванила
Плюсы - работает красиво, аккуратно, в том числе и с динамически подгружаемыми элементами
Минусы - нужОн жквери, хотя можно переписать и без него, но будет длиннее и мне лениво )
$("body").on('click', '[href*="#"]', function(e){
            e.preventDefault();
            var fixed_offset = 100;
            if(this.hash){
                var tp = parseInt($(document.querySelector(this.hash)).offset().top);
                $('html,body').stop().animate({ scrollTop: tp - fixed_offset }, 1000);
            };
        });
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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