代码之家  ›  专栏  ›  技术社区  ›  snake123

滚动到不同页面的锚点,URL中没有#

  •  0
  • snake123  · 技术社区  · 1 年前

    我需要一点帮助。我想做的是当我上场的时候 Page1.html 然后我点击 <a href=“Page2.html”> 它会像这样向下滚动 animate({scrollTop:$(“#Id-on-Page2”).offset().top-100} ID/类别 在…上 Page2.html 。我知道我可以用这个 Page2.html#Id-on-Page2 但我想实现的是 去除 这个 #锚 在…上 URL。

    我唯一做的事情是当你在Page1.html上时,当我点击a href或btn时,它将滚动而不 URL上的ID #锚 .

        $('.Page1-ahref').click(function (e) {
            e.preventDefault();
        $('html, body').animate({
                scrollTop: $(".Id-on-Page1").offset().top - 100
            }, 0);
        });
    
    1 回复  |  直到 1 年前
        1
  •  0
  •   vanowm    1 年前

    在您的onClick事件存储中 ID 要滚动到的元素的 localStorage .

    然后,检查 本地存储 在页面上加载并滚动到存储的元素(如果存在)。

    以下是一个快速示例:

    $('.Page1-ahref').click(function (e) {
        e.preventDefault();
        // store desired id
        localStorage.setItem("scrollTo", ".Id-on-Page1");
    });
    
    
    // check if we need to scroll on page load
    document.addEventListener("DOMContentLoaded", e => {
      const _scrollTo = localStorage.getItem("scrollTo")
      if (_scrollTo) {
        $('html, body').animate({
                scrollTop: $(_scrollTo).offset().top - 100
        }, 0);
      }
      // clean up
      localStorage.removeItem("scrollTo");
    });