Javascript来确定页面上开始滚动的位置?

Javascript来确定页面上开始滚动的位置?,javascript,jquery,css,ajax,scroll,Javascript,Jquery,Css,Ajax,Scroll,我有一个网站的特点是一个“固定”的标题,问题是它真的弄乱了链接,链接进一步向下的页面a la“http://mysite.com/#lower_div_on_the_page" 甚至可以使用javascript来做类似的事情吗 if (URL has #hashtag) {starting scroll position = normal position + (my_header_height)} 这可能吗 编辑: 谢谢你的回复。。。非常感谢。作为参考,我肯定使用jQuery。。。我将如何使

我有一个网站的特点是一个“固定”的标题,问题是它真的弄乱了链接,链接进一步向下的页面a la“http://mysite.com/#lower_div_on_the_page"

甚至可以使用javascript来做类似的事情吗

if (URL has #hashtag) {starting scroll position = normal position + (my_header_height)}
这可能吗

编辑: 谢谢你的回复。。。非常感谢。作为参考,我肯定使用jQuery。。。我将如何使用jQuery实现这一点?

是的,这是可能的

以下是您需要采取的步骤:

  • 设置加载DOM的事件处理程序。有不止一种方法可以做到这一点,这里有一个例子。另外,如果您使用jQuery(请参阅)或Prototype.js(请参阅)之类的javascript框架,则会容易得多

  • 在DOM加载的事件处理程序函数中,解析hashtag的URL(
    window.location

    var hashTag=window.location.href
    hashTag=hashTag.substr(hashTag.indexOf('#')+1)
    //现在,hashTag包含URL哈希符号后的部分

  • 然后,如果您识别了锚定标记,则根据该元素在DOM树中的位置或您希望使用的任何逻辑计算所需的滚动位置。同样,jQuery(请参阅)或Prototype.js(请参阅)应该能够帮助确定要滚动到的正确偏移量

  • 设置页面的滚动条。同样,jQuery(请参阅)或Prototype.js(请参阅)都有扩展来帮助实现这一点

下面是一个jQuery示例:

$(document).ready(function() {
    var hashTag = window.location.href;
    if(hashTag.indexOf('#') > 0)
    {
        hashTag = hashTag.substr(hashTag.indexOf('#'));

        // now get the element's offset relative to the document
        var offsetTop = $(hashTag).offset().top;

        // and finally, scroll the document to that offset
        $(document).scrollTop(offsetTop);
    }
});

当然,你可以做一些简单的事情,比如:

if(window.location.hash != ''){
   elementOffset = document.getElementById(window.location.hash.substr(1)).offsetTop;
   window.scrollTo(0,elementOffset + my_header_height);
}

使用jQuery显然会更简单,您需要根据包含的元素等获得额外的偏移量,但这应该是您的开始。

这确实很好,但是有没有一种方法可以使它应用于所有hashtag id,而不是使用“.getElementById('hashtag_id')”?是的,对不起,我之前没有解释过这一点,编辑elementOffset行,使其对您更有用。太棒了!。。。我肯定在使用jQuery!使用jQuery会怎么样?感谢您耐心地回答我的问题!这是一个惊人的解决方案。。。真的很喜欢这样做,非常感激!对于将来的问题,如果您使用jQuery,请确保在标记或问题文本中指定它,这样用户就不会浪费时间回答一般问题。请参阅我对jQuery API函数的回复,您需要使用这些函数来组合功能。谢谢,我明确意识到没有指定jQuery是我的错…:(