【发布时间】:2013-08-11 14:04:27
【问题描述】:
我正在构建一个带有固定位置导航栏的单页网站,该导航栏通过锚链接平滑滚动到不同的部分元素。滚动到元素的默认行为是将其与浏览器窗口的顶部对齐。相反,我想将元素对齐到屏幕的中间。
我使用这个标记进行导航:
<nav class="main-nav">
<a href="#top">Top</a>
<a href="#section-1">Section 1</a>
<a href="#section-2">Section 2</a>
<a href="#section-3">Section 3</a>
<a href="#section-4">Section 4</a>
<a href="#section-5">Section 5</a>
</nav>
我使用kswedberg's jQuery Smooth Scroll plugin 来平滑滚动。我是这样发起的:
$('.main-nav a').smoothScroll({
offset: 0,
speed: 700
});
我想将偏移量设置为((window).height / 2) - (element height / 2),使其垂直居中,但我需要帮助来弄清楚如何正确执行它。
我需要它:
- 获取窗口高度并除以二
- 获取元素的高度并除以二
- 从后者中减去前者
- 如果可能,如果元素高于窗口,则默认将其对齐到顶部
由于有很多锚链接,我假设我需要检查被点击的锚链接链接到的元素的高度,或者为每个锚链接启动 smoothScroll。
有人知道怎么做吗?
【问题讨论】:
-
我不熟悉这个插件,但
offset属性看起来很有希望.. -
我打算使用
offset属性,但我需要帮助来动态计算它的值。这就是我要问的。 -
没有什么比页面强制平滑滚动导航更烦人了,即使我在浏览器中关闭了它。
标签: javascript jquery html vertical-alignment smooth-scrolling