jQuery移动到页面加载时的锚点位置


72

我有一个简单的页面设置,例如:

<div id="aboutUs">
  About us content...
</div>
<div id="header">
  Header content...
</div>

页面加载后,我需要页面自动向下滚动(无需动画)到#header,因此除非向上滚动,否则用户看不到About About。

#aboutUs 具有固定的高度,因此不需要任何变量来确定高度或任何东西……如果需要的话。

我遇到了另一个问题,并尝试根据自己的情况修改一些答案,但似乎没有任何效果。

任何帮助,将不胜感激。


回答相关的问题在这里: stackoverflow.com/questions/2905867/...
培尔

Answers:


129

描述

您可以使用jQuery.scrollTop().offset()方法来执行此操作

查看我的样本和此jsFiddle演示

样品

$(function() {
    $(document).scrollTop( $("#header").offset().top );  
});

更多信息


感谢您的回答……这正是我所需要的,除了我无法正常工作。如果有什么不同,我正在使用预编码的店面(因此无法更改结构),并且使用.insertBefore方法将About Us div放在标题之前。那会导致它不起作用吗?谢谢。
scferg5 2012年

抱歉,我迟到了,我在厨房里;)看来您是jQuery新手,对吗?您必须等待DOM完全构建。我的答案和小提琴已更新。希望这会有所帮助,如果不再次询问我。
dknaack 2012年

乐意效劳!祝你今天愉快!
dknaack 2012年

也许我缺少了一些东西,但是为什么比这更好document.getElementById("header").scrollIntoView()呢?
Casey 2014年

27

您是否尝试过JQuery的scrollTo方法?http://demos.flesler.com/jquery/scrollTo/

或者,您可以扩展JQuery并添加自定义方法:

jQuery.fn.extend({
 scrollToMe: function () {
   var x = jQuery(this).offset().top - 100;
   jQuery('html,body').animate({scrollTop: x}, 400);
}});

然后,您可以像下面这样调用此方法:

$("#header").scrollToMe();

炫酷功能:)您还可以让该功能将动画速度作为变量。谢谢!
Burak Tokak 2015年

18

将其放在页面底部的“结束” Body标签之前。

<script>
    if (location.hash) {
        location.href = location.hash;
    }
</script>

jQuery实际上不是必需的。


2
考虑到“不需要动画”,我认为这是最简单的解决方案。
qben 2014年

1
哇,这完全省了我的培根,无关紧要。非常感
谢克里斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.