加载新页面后平滑滚动到锚点 [英] Smooth scroll to anchor after loading new page
问题描述
我想导航到新页面上的锚点,但我希望页面在顶部加载,然后立即平滑滚动到相关的锚点.可以这样做吗?
我是 Javascript 的完全新手.
这是我目前用于在当前页面内平滑滚动的 js.我只是在链接上应用了一类滚动".
非常感谢!
由于浏览器会自动检测 hash
并带您到那个位置...
我突然想到您可以先将滚动位置重置为 0,然后进行平滑滚动.
类似……
//立即到顶部if ( window.location.hash ) scroll(0,0);//取消一些浏览器问题setTimeout( function() { scroll(0,0); }, 1);$(函数(){//你当前的点击函数$('.scroll').on('click', function(e) {e.preventDefault();$('html, body').animate({scrollTop: $($(this).attr('href')).offset().top + 'px'}, 1000, '摇摆');});//*仅当我们在 url 上有锚点时如果(window.location.hash){//平滑滚动到锚点 id$('html, body').animate({scrollTop: $(window.location.hash).offset().top + 'px'}, 1000, '摇摆');}});
Edit:将 scroll(0,0)
移到 $(function(){...}) 之外;
防止闪烁.
此外,还添加了带有工作示例的代码段.
全屏观看效果最佳
html, body {边距:0;填充:0;}.隐藏代码{显示:无;可见性:隐藏;不透明度:0;}.header {背景颜色:#ccc;填充:5px;}.header li {填充:5px;边距:5px;显示:内联块;}. 文章 >div {边框:1px 实心;边距:10px;填充:250px 50px;背景颜色:#ccc;}div:之前{内容: attr(id);}.页脚{文本对齐:居中;}
<ul><li>页眉标题/导航栏</li><li><a class="scroll" href="#text-1">#text-1</a></li><li><a class="scroll" href="#text-2">#text-2</a></li><li><a class="scroll" href="#text-3">#text-3</a></li><li><a class="scroll" href="#text-4">#text-4</a></li><li><a class="scroll" href="#text-5">#text-5</a></li><li><a class="scroll" href="#text-6">#text-6</a></li><li><a class="scroll" href="#text-7">#text-7</a></li><li><a class="scroll" href="#text-8">#text-8</a></li><div class="容器"><div class="内容"><div class="文章"><div id="text-1"></div><div id="text-2"></div><div id="text-3"></div><div id="text-4"></div><div id="text-5"></div><div id="text-6"></div><div id="text-7"></div><div id="text-8"></div>
<div class="footer">公司©2015
<div class="隐藏代码"><script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script><script type="text/javascript">//立即到顶部if ( window.location.hash ) scroll(0,0);//取消一些浏览器问题setTimeout( function() { scroll(0,0); }, 1);//任意位置$(函数(){//你当前的点击函数$('.scroll').on('click', function(e) {e.preventDefault();$('html, body').animate({scrollTop: $($(this).attr('href')).offset().top + 'px'}, 1000, '摇摆');});//*仅当我们在 url 上有锚点时如果(window.location.hash){//平滑滚动到锚点 id$('html, body').animate({scrollTop: $(window.location.hash).offset().top + 'px'}, 1000, '摇摆');}});