• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Smooth scroll - czysty JS

42 Warsaw Coding Academy
0 głosów
558 wizyt
pytanie zadane 8 grudnia 2018 w JavaScript przez povalor Nowicjusz (190 p.)
Witam, podjąłem próbę zrobienia smooth scroll w czystym JS, niestety napotkałem problem. Na stronie mam sticky menu. Gdy strona jest przesunięta na samą górę - smooth scroll działa, ale jeśli zjedziemy trochę w dół i klikniemy na odnośnik - smooth scroll nie działa i nie przenosi do odpowiedniej sekcji. Dlaczego?

Chcę to zrobić w czystym JS. Codepen: https://codepen.io/genghis/pen/roNaej

2 odpowiedzi

+1 głos
odpowiedź 9 grudnia 2018 przez Kamil Naja Nałogowiec (27,550 p.)
edycja 9 grudnia 2018 przez Kamil Naja
// początek funkcji
function scrollTo(element, e) {
  e.preventDefault();
...
//wywołanie
bottom.addEventListener('click', (e) => scrollTo(section3, e));


   to chyba będzie do zmiany, co drugie kliknięcie przenosi w inne miejsce.

top: element.getBoundingClientRect().top - 50

Wyjaśnienie - elementy middle i bottom są linkami, na kliknięcie wykonują domyślne akcje, które trzeba zablokować przez prevent default.

komentarz 9 grudnia 2018 przez povalor Nowicjusz (190 p.)

Dzięki, o to po części chodziło + jeszcze znalazłem rozwiązanie z tym, że co drugie kliknięcie przenosi w inne miejsce. Linijkę

top: element.getBoundingClientRect().top - 50

zmieniłem na

top: element.getBoundingClientRect().top - 50 + window.scrollY

 

0 głosów
odpowiedź 9 grudnia 2018 przez niezalogowany
przywrócone 9 grudnia 2018
Zdaje mi się, że getBoundingClientRect zwraca odległość względem widoku. Więc jeżeli jesteś na górze to pozycja będzie prawidłowa jednak gdy już zjedziesz na dół to odległość się zmniejszy a ty zostaniesz cofnięty w nieprawidłowe miejsce.

Podobne pytania

0 głosów
1 odpowiedź 751 wizyt
pytanie zadane 28 czerwca 2019 w JavaScript przez Mikołaj_627 Początkujący (480 p.)
0 głosów
1 odpowiedź 888 wizyt
pytanie zadane 23 maja 2018 w JavaScript przez Łucja Nowicjusz (120 p.)
0 głosów
1 odpowiedź 333 wizyt

93,386 zapytań

142,385 odpowiedzi

322,547 komentarzy

62,748 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...