用纯css视差滚动Jquery并不起作用

时间:2014-09-09 19:25:25

标签: javascript jquery html css

我正在尝试使用着名的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/

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

1 个答案:

答案 0 :(得分:3)

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

根据滚动target.offset().top的数量,

$('.parallax')是相对值。要修复scrollTop值,请添加当前滚动值$('.parallax')

scrollTop: $(target).offset().top + $('.parallax').scrollTop()