使用纯css视差的Jquery滚动不起作用

sai*_*aid 5 html javascript css jquery

我正在尝试使用着名的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>
Run Code Online (Sandbox Code Playgroud)

身体:

<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>
Run Code Online (Sandbox Code Playgroud)

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;
            }
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

这是代码中最相关的部分 - 你可以在jsfiddle上找到它... http://jsfiddle.net/mgLzejad/1/

检查代码,看看你是否能找到错误 - 我不能......

Edw*_*Lee 3

这是jsfiddle: http: //jsfiddle.net/mgLzejad/2/

target.offset().top是根据$('.parallax')滚动量的相对值。要修复scrollTop值,请添加当前滚动值$('.parallax')

scrollTop: $(target).offset().top + $('.parallax').scrollTop()
Run Code Online (Sandbox Code Playgroud)