组合不正常工作我使用这个漂亮的小JavaScript来使我的导航栏(通常坐在顶部230px下)粘到顶部一旦页面向下滚动即230页。然后它给“nav”元素一个“固定”的位置。页面定位符与“滚动然后修复”JS导航栏代码
$(document).ready(function() {
$(window).bind('scroll', function() {
if ($(window).scrollTop() > 230) {
$('nav').addClass('fixed');
} else {
$('nav').removeClass('fixed');
}
});
});
nav {
width: 90%;
display: flex;
justify-content: center;
max-width: 1400px;
height: 85px;
background-color: rgba(249, 241, 228, 1);
margin: auto;
border-top-left-radius: 0em;
border-top-right-radius: 0em;
border-bottom-left-radius: 2em;
border-bottom-right-radius: 2em;
}
.fixed {
position: fixed;
border-top: 0;
top: 0;
margin: auto;
left: 0;
right: 0;
z-index: 4;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
<ul>
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li>
<li><a href="#four">Four</a></li>
</ul>
</nav>
现在的问题:我已经放置在相应的锚目标页面内 ,并给予他们一些“填充顶”占固定导航栏(约90像素),这样当点击后页面跳到它们后面时,它们不会消失在栏后面。
.anchor {
padding-top: 90px;
}
<a class="anchor" id="three">
这工作正常,因为导航栏已经固定在顶部。 但是,如果您在导航栏仍处于其原始页面中间位置(例如,用户首次点击该页面)时点击链接,它会忽略我给出锚点目标的偏移量并跳转到锚点的奇怪位置目标隐藏在导航栏后面(甚至不与页面的顶部对齐)!
如果我然后再次单击链接(现在在页面顶部的固定栏中),它会自行更正并显示我想要的页面。但是,第一次点击总是错过 - 我无法弄清楚为什么!请帮助
编辑:工作演示在这里:http://www.myway.de/husow/problem/problem.html
你能给我们一个可以重现问题的工作演示吗? –
是的,这是一个简化的问题重现:http://www.myway.de/husow/problem/problem.html –
在这个例子中,它始终处于导航背后! –