我有一个网站,当用户向下滚动页面时标题会固定到位 - 标准内容。
因此,当我点击一个链接转到页面下方的锚标记时,我想要跳转到该部分的开头位于标题下方。
为了解决这个问题,我遵循了这里的建议:offsetting an html anchor to adjust for fixed header当我跳转到同一页面上的链接时,它非常有效。
但是,如果我尝试从不同的页面跳转到相同的锚标签 - E.G:
<a href="http://www.example.com/different-page.html#anchor-name">link text</a>
然后我不会在页面上的正确位置结束。我猜测发生了什么,我已经加载了 css之前被带到锚标记。结果,我被放置在页面上的某个点(锚点当前所在的位置)但是然后内容被加载并且css移动锚标记并且我离开了错误的位置 - 在标签附近
所以我的问题是,是否有可能在仍然使用一个简单的超链接的情况下这样做,或者我应该尝试劫持它并用javascript做一些事情来尝试让我到达页面上的正确位置?
更新
确定尝试使用jquery检查hash并在document.ready上导航到它,但它似乎仍然执行得太快。
如果我使用以下代码:
if( $(".blogPost").length ) {
// var anchorID = window.location.hash;
//setTimeout(function() {
$('html,body').animate({
scrollTop: $("#comments").offset().top
}, 'slow');
//}, 3000);
}
页面不会滚动到#comments元素。但是,如果我使用setTimeout并等待另外3秒 - 页面然后愉快地滚动到该元素。它好像需要额外的时间让页面完全加载?