我希望创建一个页面,允许哈希标签跳转到页面的某些内容。
e.g.
http://example.com/page1 http://example.com/page1是一个普通页面
http://example.com/page1#info http://example.com/page1#info会跳转到带有id的标签#info
这是默认的浏览器行为,因此没有问题。
当我有固定的浏览器标题时,问题就开始了,因为我需要一些额外的偏移量,以便固定标题不会覆盖元素。
对于页面上的内部链接,这不是问题,因为我只使用以下代码:
var scrollOffset = 175;
$('a.tab-button[href^="#"]').on('click', function(event) {
var $target = $(targetId);
console.log($(this).attr('href'));
if( $target.length ) {
event.preventDefault();
window.scrollTo(0, $target.offset().top - scrollOffset);
}
})
where scrollOffset
是我希望偏移的像素数。
然而,问题在于在浏览器中输入 url 并单击 Enter 时(就像直接单击页面上的 URL 锚标记一样)。虽然它正确地滚动到元素;浏览器窗口和元素之间没有偏移,导致它隐藏在固定导航栏下方。
注意我已经知道以下技术:
h2:before {
display: block;
content: " ";
margin-top: -285px;
height: 285px;
visibility: hidden;
}
以及其他 CSS 技巧http://nicolasgallagher.com/jump-links-and-viewport-positioning/demo/ http://nicolasgallagher.com/jump-links-and-viewport-positioning/demo/
所以请只给出JS答案!!!