有问题的jQuery导航栏弹出窗口
Buggy jQuery Navbar Popout
我有一个导航栏,当你滚动页面时会弹出并保持在顶部,但问题是当你从页面上滚动到弹出页面的其余部分时,页面的其余部分会跳起来一点。
这是jquery:(请原谅回声的)
echo "<script type='text/javascript'>";
echo "$(function() {";
// grab the initial top offset of the navigation
echo "var sticky_navigation_offset_top = $('#navbar_container').offset().top;";
// the function that decides weather the navigation bar should have "fixed" css position or not.
echo "var sticky_navigation = function() {";
echo "var scroll_top = $(window).scrollTop();"; // our current vertical position from the top
// if we've scrolled more than the navigation, change its position to fixed to stick to top,
// otherwise change it back to relative
echo "if (scroll_top > sticky_navigation_offset_top) {";
echo "$('#navbar_container').css({ 'position': 'fixed', 'top':0, 'left':0 });";
echo "} else {";
echo "$('#navbar_container').css({ 'position': 'relative' });";
echo "}";
echo "};";
// run our function on load
echo "sticky_navigation();";
// and run it again every time you scroll
echo "$(window).scroll(function() {";
echo "sticky_navigation();";
echo "});";
echo "});";
echo "</script>";
如果你真的慢慢地向下滚动一点让它弹出并看着页面的正文跳起来一点,我试图让它不发生,所以它弹出时真的很流畅。(它碰巧弹出并重新出现)。
我认为这是因为导航在向下滚动时position: fixed;
设置,这意味着它不再嵌入页面中,这意味着整个页面失去了那么多高度,这导致它"跳起来"。(希望这是有道理的。
尝试将其调整为如下所示的内容:
echo "if (scroll_top > sticky_navigation_offset_top) {";
echo "$('#navbar_container').css({ 'position': 'fixed', 'top':0, 'left':0 });";
echo "$('body').css({ 'margin-top': 45});";
echo "} else {";
echo "$('#navbar_container').css({ 'position': 'relative' });";
echo "$('body').css({ 'margin-top': 0});";
echo "}";
更好的是,使用bootstrap,它也可以迎合移动设备! 他们的"固定顶部"示例展示了一个始终保持在顶部的菜单!
固定顶部示例,引导程序
将导航栏放入另一个容器中 - 为该容器提供固定高度,然后它就不会再弹出
<div class="navbar_surrounding">
<div id="navbar_container" style="position: relative;">
...
</div>
</div>
.css
.navbar_surrounding {
display: block;
height: 45px;
width: 100%;
}
相关文章:
- 显示放大镜弹出窗口时隐藏导航内容
- 具有子窗口的窗口打开器在同一窗口中导航不起作用
- 显示移动窗口时引导导航栏中的 atach 搜索栏
- 即使用户正在导航到其他页面,也要在一段时间后打开弹出窗口
- 导航切换仅在最小化窗口时可见
- 只有当我导航回窗口时,angular ng show才有效
- 选择框导航:窗口打开页面加载而不是更改
- 如何仅在窗口宽度从桌面(>1024px)更改为移动(<1025px)导航时重新加载页面
- 使用Crossrider查找窗口并导航到URL
- 区分程序化Bing AJAX地图导航与用户平移/缩放和窗口大小
- 引导字形/导航栏显示弹出窗口
- Javascript 窗口导航器浏览器名称在 chrome 中不起作用
- 为什么我的窗口导航代码失败
- 同时调整窗口导航栏文本移动的大小
- 窗口导航
- Wordpress定制预览脚本在初始页面加载时执行实时预览,而不是在我从预览窗口导航内部页面时执行实时预览
- 窗口.导航器或者只是导航器
- 窗口.导航vs响应.重定向,有什么区别
- 如何移除用于单元测试的窗口/导航器JS API
- 改变窗口.导航器JavaScript