Javascript 如何通过在特定id上的平滑滚动导航到另一个页面?

Javascript 如何通过在特定id上的平滑滚动导航到另一个页面?,javascript,html,css,Javascript,Html,Css,我有一个多页面的网站。。 因此,我需要一个代码,用于在加载到另一个页面上的特定id或部分后导航到另一个页面并平滑滚动 e、 g.在导航栏中,我有多个页面,因此我将使页面包含来自导航栏的4个链接。。所以我需要当我点击导航栏中的链接时,将我导航到包含此链接的页面,并向下平滑滚动到包含我点击的此链接的部分 我不仅使用html,而且没有平滑的滚动。。我只需单击导航栏中的链接,它就会将我导航到包含此链接信息的指定部分。在另一页 我不知道我的问题是否足够清楚,但我希望现代浏览器能够检测到url中的哈希,然后

我有一个多页面的网站。。 因此,我需要一个代码,用于在加载到另一个页面上的特定id或部分后导航到另一个页面并平滑滚动

e、 g.在导航栏中,我有多个页面,因此我将使页面包含来自导航栏的4个链接。。所以我需要当我点击导航栏中的链接时,将我导航到包含此链接的页面,并向下平滑滚动到包含我点击的此链接的部分

我不仅使用html,而且没有平滑的滚动。。我只需单击导航栏中的链接,它就会将我导航到包含此链接信息的指定部分。在另一页


我不知道我的问题是否足够清楚,但我希望现代浏览器能够检测到url中的哈希,然后自动打开该部分。因此,如果您希望平滑滚动到该部分,则首先需要将滚动位置重置为0,然后添加平滑滚动

添加以下
脚本

// direct browser to top right away
if (window.location.hash)
    scroll(0,0);
// takes care of some browsers issue
setTimeout(function(){scroll(0,0);},1);
现在,尝试从其他页面访问锚定,您会注意到浏览器会将您带到页面顶部,而不会滚动到锚定元素

现在,添加平滑滚动:

$(function(){
//your current click function
$('.scroll').on('click',function(e){
    e.preventDefault();
    $('html,body').animate({
        scrollTop:$($(this).attr('href')).offset().top + 'px'
    },1000,'swing');
});

// if we have anchor on the url (calling from other page)
if(window.location.hash){
    // smooth scroll to the anchor id
    $('html,body').animate({
        scrollTop:$(window.location.hash).offset().top + 'px'
        },1000,'swing');
    }
});
它现在可以很好地工作了。您将被带到其他页面中的锚元素,并平滑地滚动到该部分

完整代码:


在CSS文件中,只需添加-

html{
    scroll-behaviour : smooth;
} 
并将href中的ID指定为

href=“file_where_the_element_is.html#ID_of_the_element”

例如:


你有一个目标,你是如何实现的?分享你面临的问题。关于只使用html,我只是在另一个页面中为我需要导航的部分提供了一个id,并这样写href=“otherpage.html”部分“所以我做了,但没有滚动,它是如此坚实。。因此,当我从另一个页面导航到此部分时,我需要一个javascript代码来进行滚动。如果您需要该代码,请尝试对其进行编码,以找到一个能够满足您需要的库。这不是一个编码服务。我只是问如何做,因为我没有找到任何解决方案。。所以,也许有人知道如何使用代码,或者只是给我一个想法或第一步来完成它,你在哪里设置代码?在带有链接的页面中还是在带有锚的页面中?这是一个非常好的功能。
html{
    scroll-behaviour : smooth;
} 
<a href="index.html#contentID>