ScrollTop在Chrome中真的很生涩

时间:2012-11-04 21:13:07

标签: jquery google-chrome scrollto scrolltop parallax

我正在使用scrollTop函数创建一个视差滚动网站,将scrollTop函数绑定到我网站的不同锚点。

我遇到的问题是Chrome中的滚动变得非常不稳定/不稳定,但在某些方面它在Firefox中很好。

我的代码如下:

 $('.recipes').click(function(){
 $('html,body').animate({
 scrollTop: $(".main1").offset().top
 }, 1500);
 });

 $('.cooking').click(function(){
 $('html,body').animate({
 scrollTop: $(".main2").offset().top
 }, 1500);
 });

有没有其他方法可以做到这一点,所以网站滚动不是生涩?也许我可以添加一个缓和功能?

  • 编辑 -

如果我删除了以下功能,那么生涩似乎就会消失,代码是否有问题,或者可能采用不同的方式来编写它?

var startY = $('#container').position().top + $('#container').outerHeight();

$(window).scroll(function(){
checkY();
});

function checkY(){
if( $(window).scrollTop() > startY ){
    $('#backToTop, #navigation').fadeIn(600);
}else{
    $('#backToTop, #navigation').fadeOut(600);
}
}

checkY();

第二次编辑

$(document).ready(function(){

$('.recipes').click(function(){
    $.scrollTo('.main1', 1500)
 });

$('.cooking').click(function(){
    $.scrollTo('.main2', 1500)
});

$(function () {
    $(window).scroll(function () {
        if ($(this).scrollTop() > 600) {
            $('#backToTop, #navigation').show();
        } else {
            $('#backToTop, #navigation').hide();
        }
    });
    }); 

});

2 个答案:

答案 0 :(得分:1)

如果您对使用插件的替代方法持开放态度,jQuery scrollTo在使用它时一直非常流畅。

这可以让你做到

$('.recipes').click(function(){
    $.scrollTo('.main1', 1500);
});

答案 1 :(得分:1)

而不是在每次页面滚动一点点时触发的.scroll()上执行淡入淡出功能,而是在.animate() callback上执行,这只在滚动完成时触发一次。< / p>

$('.recipes').click(function(){
     var startY = $('#container').position().top + $('#container').outerHeight();
     $('html,body').animate(
          { scrollTop: $(".main1").offset().top },
          1500,
          function() {
             checkY(startY);
          } 
     );
});

$('.cooking').click(function(){
     var startY = $('#container').position().top + $('#container').outerHeight();
     $('html,body').animate(
         { scrollTop: $(".main2").offset().top },
         1500,
         function(){
             checkY(startY);
         }
     );
});

OP的原始checkY()功能:

function checkY(i) {
    if( $(window).scrollTop() > i ) {
        $('#backToTop, #navigation').fadeIn(600);
    } else {
        $('#backToTop, #navigation').fadeOut(600);
    }
}