Javascript 更改url中的id时页面抖动?

Javascript 更改url中的id时页面抖动?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个页面,每个页面有10个块,每个块占窗口的高度。我试图通过在像page.com#one一样向下滚动页面时向url添加块id来更改url。url更新得很好,但在尝试使用id时遇到了问题。如何在没有问题的情况下平稳地转换更改 <div class="block" id="one"> <p>....</p> </div> <div class="block" id="two"> &

我有一个页面,每个页面有10个块,每个块占窗口的高度。我试图通过在像page.com#one一样向下滚动页面时向url添加块id来更改url。url更新得很好,但在尝试使用id时遇到了问题。如何在没有问题的情况下平稳地转换更改

    <div class="block" id="one">
        <p>....</p>
    </div>
    <div class="block" id="two">
        <p>....</p>
    </div>

Jquery

    $('.block').each(function(){
        if (
            $(this).offset().top < window.pageYOffset + 10
            && $(this).offset().top + $(this).height() > window.pageYOffset + 10
          ){
             window.location.hash = $(this).attr('id');
           }
     });
$('.block')。每个(函数(){
如果(
$(此).offset().topwindow.pageYOffset+10
){
window.location.hash=$(this.attr('id');
}
});

这是因为通过设置
window.location.hash
的值,您告诉浏览器实际跳转到页面中的该元素

您尝试模拟的页面很可能不使用真实ID,而是使用占位符ID,例如:

并且在页面加载时有一个脚本,其作用如下:

$(function() {
    if(window.location.hash.substring(0, 7) === "#block-") {
       // Scroll to block whatever...
    }
});

为什么要对每个
执行此操作,而不是直接用
id
指向所需的
?我还试图通过在向下滚动页面的url中添加块id来更改url。