【发布时间】:2011-04-15 01:51:49
【问题描述】:
我正在使用 jquery 滚动到页面的各个部分。
代码如下:
// Scroll to element
$('#menu li a').click(function(){
var elementId = $(this).attr('href');
$('html, body').animate({ scrollTop: $(elementId).offset().top }, 1600);
return false;
});
<ul id="menu">
<li><a href="#item1">1</a></li>
<li><a href="#item2">2</a></li>
</ul>
<div id="item-1">placeholder-1</div>
<div id="item-2">placeholder-2</div>
如您所见,我正在从菜单链接中获取目标元素的 href (#id) 并滚动到目标元素。
但问题在于我的目标元素一直到页面底部,当页面滚动到最后一个时,该元素的顶部无法滚动到页面顶部,因为底部没有足够的页面...我说得通吗?
我正在尝试使用 css 或 jquery 制定解决方案,这意味着无论页面的高度(或底部的填充/边距)如何,当菜单项位于时,元素都将位于视口的顶部点击。
我是否使用 javascript 根据视口的高度添加更多填充?我是否使用了某种溢出技巧?
【问题讨论】:
-
只是好奇,但你知道你可以使用
<a href="#id-of-an-element">go to that element</a>而不涉及任何javascript,对吗?除非您需要更具体的选择,否则仅使用 id 有点糟糕。 -
@Khez 我猜他想创建动画。
<a href="#id-of-an-element">go to that element</a>很有用,但没那么漂亮。 -
@Khez:但我认为 Niels 希望
#id元素始终位于屏幕顶部,即使#id实际上位于<body>的底部。 -
这是正确的亩。我使用 Khez 建议的作为后备方案,但添加了一些动画。
标签: jquery css scroll overflow