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

Nawigacja do podanej sekcji

42 Warsaw Coding Academy
+1 głos
202 wizyt
pytanie zadane 18 listopada 2020 w HTML i CSS przez K4P3K Początkujący (360 p.)
Co zrobić, aby po naciśnięciu wybranego przycisku z menu nav  strona była scrollowana do wybranego akapitu, ale był on na środku ekranu, a nie u góry ekranu.

https://codepen.io/K4P3K/pen/KKMYRmM

1 odpowiedź

0 głosów
odpowiedź 18 listopada 2020 przez Bartek12 Mądrala (5,510 p.)
przywrócone 18 listopada 2020 przez Bartek12
 
Najlepsza
<script>
            var duration = 650;
            jQuery(function ($) {
                $.scrollTo(0);

                $(".link1").click(function(){
                     $.scrollTo($('#kontakt'), {
                        duration: duration,
                        offset: {
                            top: -55
                        }
                    });
                })
                $(".link2").click(function () {
                    $.scrollTo($('#projekty'), {
                        duration: duration,
                        offset: {
                            top: -55
                        }
                    });
                })
                $(".link3").click(function () {
                    $.scrollTo($('#o-nas'), {
                        duration: duration,
                        offset: {
                            top: -55
                        }
                    });
                })
            }
            );

            $(window).scroll(function () {
                if ($(this).scrollTop() > 300) $('.scrollup').fadeIn();
                else $('.scrollup').fadeOut();
            }
            );

        </script>

Tu masz mój kod. Zapewnia gładkie przewijanie. Chodzi w nim o to że dodaje parametr offset, który określa margines od góry. Żeby było na środku musisz pokombinować z jednostkami. smiley

Jeśli nie o to ci chodziło to możesz pokombinować z css i parametrem scroll-behavior z tego co pamiętam tam też się dało ustawić margines.

EDIT: zapomniałem napisać, że musisz użyć jquery i jednej biblioteki

<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/jquery.scrollto@2.1.2/jquery.scrollTo.min.js"></script>

 

 

 

komentarz 18 listopada 2020 przez Bartek12 Mądrala (5,510 p.)

Przepraszam, że tak chaotycznie jak coś, ale pisze w pospiechu laugh

komentarz 18 listopada 2020 przez trzczy Gaduła (3,280 p.)
Czyli pozostał problem określenia środka akapitu?
komentarz 18 listopada 2020 przez K4P3K Początkujący (360 p.)

@Bartek12, Aktualnie mam problem z podpięciem skryptu do strony ze względu, że dopiero zacząłem używać js.

komentarz 18 listopada 2020 przez Bartek12 Mądrala (5,510 p.)

tak i musisz do każdego elementu menu przypisać odpowiednią klasę lub id.

(w przykładzie klasy: link1,link2,link3)

komentarz 18 listopada 2020 przez Bartek12 Mądrala (5,510 p.)

@K4P3K, w takim razie możesz spróbować z css tak jak napisałem.

Parametr scroll-behavior i jak dobrze kojarzę scroll-margin-top

komentarz 18 listopada 2020 przez K4P3K Początkujący (360 p.)
Okej dziękuję

Podobne pytania

+1 głos
2 odpowiedzi 363 wizyt
pytanie zadane 1 stycznia 2019 w JavaScript przez Bakr Mądrala (6,850 p.)
0 głosów
2 odpowiedzi 932 wizyt
pytanie zadane 18 lipca 2015 w HTML i CSS przez niezalogowany
0 głosów
1 odpowiedź 262 wizyt

93,377 zapytań

142,379 odpowiedzi

322,528 komentarzy

62,726 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
...