jquery 平滑滚动到另一页面中的锚

rta7y2nd  于 2022-11-22  发布在  jQuery
关注(0)|答案(3)|浏览(153)

我 已经 想 出 了 如何 平滑 滚动 从 一 个 链接 到 一 个 锚 , 但 它 是 在 同一 个 页面 内 工作 。
For example, if I am in the home page, this link will smooth scroll: mysite.com/#section
但是 如果 我 在 关于 页面 ( mysite.com/about ) , 到 主页 的 相同 链接 ( mysite.com/#section ) 将 不会 平滑 滚动 , 只是 普通 的 默认 值 。
目前 为止 , 我 有 这样 一 条 消息 :

jQuery('a').click(function(){
    jQuery('html, body').animate({
        scrollTop: jQuery( this.hash ).offset().top
    }, 500);
});

中 的 每 一 个
我 没 办法 了 , 请 帮帮 忙

bzzcjhmw

bzzcjhmw1#

您需要使用CSS:演示版

html {
  scroll-behavior: smooth;
}
djp7away

djp7away2#

下面是为我工作的代码,以防有人在寻找答案:

jQuery(document).ready(function() {

    // Scrolling for anchor links in within the same page
    jQuery('a[href*="#"]:not([href="#"])').click(function(){
        _hash = this.hash;
        _scroll_it( _hash );
    });

    // scrolling for anchor links coming from a different page
    var _hash = window.location.hash;
    if( _hash.length > 0 ){     
        window.scrollTo(0, 0);
        
        setTimeout( function() { 
            _scroll_it( _hash );
        }, 500 );       
    }
    
    function _scroll_it( _hash ){
        jQuery('html,body').animate({
            scrollTop: jQuery( _hash ).offset().top
        }, 500 );
    }

});
brjng4g3

brjng4g33#

试试看,检查URL中是否有#section,然后滚动到目标。

if(window.location.hash != '' && window.location.hash != '#') {
  let target = window.location.hash;

  if(!$(target).length) {
    return;
  }
  
  $('html, body').animate({
    scrollTop: $(target).offset().top
  });
}

if(!$(target).length)很重要,如果页面上没有具有正确id的div,则可能会出现错误。

相关问题