我正在尝试使用着名的Kess Clark纯css视差页面教程(http://blog.keithclark.co.uk/pure-css-parallax-websites/)。
到目前为止,这么好。当我想将它与带有jQuery平滑滚动的导航栏结合使用时,就出现了问题。
页面已滚动时出现问题。所以基本上,它从顶部滚动到我希望它滚动的点,但如果页面在产品或联系人上,它会滚动到奇怪的地方。
我为此尝试过一堆不同的片段,但似乎它只是不想工作!
HTML
导航:
<ul class="nav navbar-nav navbar-right">
<li><a href="#group2">Home</a></li>
<li><a href="#group3">About</a></li>
<li><a href="#group5">Products</a></li>
<li><a href="#group7">Contact</a></li>
</ul>
体:
<div class="parallax">
<div id="group2" class="parallax__group">
<div class="parallax__layer parallax__layer--back">
<div class="title">START</div>
</div>
</div>
<div id="group3" class="parallax__group">
<div class="parallax__layer parallax__layer--base">
<div class="title">ABOUT</div>
</div>
</div>
<div id="group4" class="parallax__group">
<div class="parallax__layer parallax__layer--deep">
<div class="title">RANDOM PICTURE</div>
</div>
</div>
<div id="group5" class="parallax__group">
<div class="parallax__layer parallax__layer--base">
<div class="title">PRODUCTS</div>
</div>
</div>
<div id="group6" class="parallax__group">
<div class="parallax__layer parallax__layer--back">
<div class="title">RANDOM PICTURE</div>
</div>
</div>
<div id="group7" class="parallax__group">
<div class="parallax__layer parallax__layer--base">
<div class="title">CONTACT</div>
</div>
</div>
</div>
Jquery的:
$(function() {
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('.parallax').animate({
scrollTop: target.offset().top
}, 2500);
return false;
}
}
});
});
这是代码中最相关的部分 - 你可以在jsfiddle上找到... http://jsfiddle.net/mgLzejad/1/
检查代码,看看你是否能找到错误 - 我不能......
答案 0 :(得分:3)
这是jsfiddle:http://jsfiddle.net/mgLzejad/2/
根据滚动target.offset().top
的数量, $('.parallax')
是相对值。要修复scrollTop值,请添加当前滚动值$('.parallax')
scrollTop: $(target).offset().top + $('.parallax').scrollTop()