【问题标题】:ScrollTo... How to scroll to a certain number of pixels above a #?ScrollTo...如何滚动到#上方的一定数量的像素?
【发布时间】:2023-04-03 05:12:01
【问题描述】:

好的,我的问题是我有一个固定的导航栏,在屏幕顶部占据 115 像素的空间。当您滚动“到”某个部分时,固定栏将覆盖该部分的一部分。我需要它做的是在它应该滚动到的部分上方滚动大约 130 像素(导航栏为 115 像素,还有一点额外的空间,这样看起来不会太拥挤)。

set up a quick and dirty JSFiddle 这样你就可以明白了。

我认为我应该在此使用偏移量或以上,但它们似乎没有做任何事情:

$('#navigation a').click(function(){//$.scrollTo works EXACTLY the same way, but scrolls the whole screen
$.scrollTo( this.hash, 1500, {easing:'elasout'});
});

Here 是我从中获取脚本和示例的地方,如果它们对您有帮助的话。

我还希望消除附加到 URL 的 #hash 链接,以免淹没回溯历史。由于导航栏是固定的,因此实际上不需要它们,您只需单击导航上的新链接即可访问网站的任何部分。但这不是主要问题。

感谢您的帮助。

【问题讨论】:

    标签: javascript jquery scroll position scrollto


    【解决方案1】:

    简单的例子!注意:不使用示例中的插件 - 仅在 Firefox 和 Chrome 中测试

    演示:http://jsfiddle.net/6DTLc/4/

      $('ul#navigation').find('a').on('click', function(e) {
          var
          link_href =  $(this).attr('href'),   
          $linkElem =  $(link_href),
          $linkElem_scroll = $linkElem.get(0) && $linkElem.position().top-115;           
    
          $('html, body')
              .animate({scrollTop: $linkElem_scroll}, 'slow');         
    
            e.preventDefault();
        });
    

    【讨论】:

    • 太棒了,谢谢!现在有什么方法可以像我发布的 JSFiddle 一样添加 {easing:'elasout'} 效果?
    • 哦,酷,我想通了。我只是将您的代码合并到 scrollTo 代码中并且它起作用了。 :) 谢谢~
    猜你喜欢
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多