JS функция, которая плавно переходит к элементу после загрузки страницы, на которую ссылается привязка

#javascript #html #jquery

#javascript #HTML #jquery

Вопрос:

Последние несколько дней я работаю над автоматической функцией плавной прокрутки в JS, которая прокручивается до контейнера div (контейнер должен быть центрирован на экране, а не как плавное поведение CSS).

Я нашел десятки решений, но ни одно из них не сработало в моем случае..

У меня есть небольшое выпадающее меню, которое содержит ссылки на divs на странице родительского элемента. Пользователь должен иметь возможность щелкнуть по любой из этих ссылок, а затем перейти на ту же страницу, но с другим событием прокрутки..

например, если он нажимает на «Damen» в выпадающем меню, предполагается, что страница «Leistungen» загружается, за которой следует событие, которое плавно переходит к данному элементу. Чего я не хочу, так это стандартной плавной прокрутки CSS.

К сожалению, я только изучаю Javascript и могу только сильно изменять данные решения, к сожалению, это просто никогда не работало..

Если это поможет, вот полный код в моем CodePen: https://codepen.io/gisbert12843/pen/NWrRjbE

Для просмотра в реальном времени посетите: https://gisbertstestsite.xyz/dist/htmls/leistungen.html

И вот немного моего текущего кода (только соответствующие части) ^^

Навигация:

 <nav class="navbar">
    <ul>
        <li><a href="/index.html"><i class="fas fa-home"></i> Home</a></li>
        <li class="active dropdown"><a href="/dist/htmls/leistungen.html"><i class="fas fa-cut"></i>
                Leistungen</a>
            <div class="dropdown-class">
                <ul class="dropdown-content">
                    <li><a href="/dist/htmls/leistungen.html#Herren">Herren</a></li>
                    <li><a href="/dist/htmls/leistungen.html#Damen">Damen</a></li>
                    <li><a href="/dist/htmls/leistungen.html#Jugend_Kinder">Jugend und Kinder</a></li>
                    <li><a href="/dist/htmls/leistungen.html">Farben und Strähnen</a></li>
                    <li><a href="/dist/htmls/leistungen.html">Wellen und Glätten</a></li>
                    <li><a href="/dist/htmls/leistungen.html">Extension | Perücken | Toupets</a></li>
                    <li><a href="/dist/htmls/leistungen.html">Kuren</a></li>
                    <li><a href="/dist/htmls/leistungen.html">Brautservice</a></li>
                    <li><a href="/dist/htmls/leistungen.html">Kosmetik</a></li>
                </ul>
            </div>
        </li>
    </ul>
</nav>
  

Пример элемента div, к которому он должен прокручиваться:

 <div class="blurwrapper Herren" id="scroll-Herren">
       <div class="table">
              <table class="fl-table"></table>
       </div>
</div>
  

И мой текущий (не работающий) javascript

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<script type="text/javascript">
    $(document).ready(function () {
        let page_url = window.location.href;
        let page_id = page_url.substring(page_url.lastIndexOf("#")   1);
        // alert(page_id);
        if (page_id == "Jugend_Kinder") {
            $("html, body").animate({
                scrollTop: $("#scroll-"   page_id).offset().top
            }, 1000);
        }

    });
</script>
  

Я благодарен и открыт для любых подсказок и предложений, независимо от того, насколько они малы!

С наилучшими пожеланиями!

Ответ №1:

Каждый должен начинать с чего-то, верно? ^^

Я чувствую, что проблема в том, что, хотя вы правильно указываете URL-адреса, вы не указали свои идентификаторы привязок. Хотя запрашивается URL /dist/htmls/leistungen.html#Herren -адрес, элемента с идентификатором «Herren» нет.

Каждая привязка a-url-link-and#someAnchor будет искать элемент с идентификатором #someAnchor

Также, пожалуйста, имейте в виду, что:

  • Привязочные ссылки и идентификаторы чувствительны к регистру
  • Когда загружается новая страница и уже указан идентификатор привязки (я думаю), браузер будет автоматически прокручиваться.