efekt płynnego przewijania strony po kliknięcu na odnośnik

0

Znam 2 sposoby na osiągnięcie efektu płynnego przewinięcia strony w górę lub w dół.

Poziom HTML:

<a href="#tag">tekst</a>

Poziom JS:

.scrollIntoView({behavior: "smooth"})

Pytanie który jest lepszy i jakie są jeszcze inne możliwości?

2

href="#tag" niekoniecznie przewinie płynnie, c'nie? Wydaje mi się, że u mnie kotwice dają insta-skok (i słusznie zresztą :-P).

3

Jeśli chcemy z tego korzystać na całej stronie to możemy ustawić

html {
  scroll-behavior: smooth;
}

Wtedy działa to zarówno przy

<a href="#tag">tekst</a>

jak i

element.scrollIntoView()

EDIT:
Sposób działa, o ile nie zostanie to wyłączone przez ustawienia przeglądarki chrome://flags/#smooth-scrolling ale to pewnie jakieś znikome przypadki.

0

A jak do tego mają się frameworki? Bo za ich pomocą analogiczny efekt również można uzyskać.

0
kosmonauta80 napisał(a):

A jak do tego mają się frameworki? Bo za ich pomocą analogiczny efekt również można uzyskać.

Możesz podać jakiś przykład?

Bo załóżmy, że masz jakąś bibliotekę / framework, który udostępnia funkcję smoothScroll to musi ona zostać zrobiona na podobnych zasadach i bazować na zwykłym JavaScripcie.

const smoothScroll = (element) => {
  element.scrollIntoView({ behavior: "smooth" });
}

Może też być na metodzie np window.scrollTo, ale z tym trochę więcej zabawy https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo

2

scroll-behavior: smooth;
jest to wciąż uzależnione od ustawień przeglądarki: chrome://flags/#smooth-scrolling
Niestety chcąc mieć 100% pewności we wszystkich przeglądarkach wciąż trzeba się wesprzeć JavaScript'em.

1 użytkowników online, w tym zalogowanych: 0, gości: 1