jquery 滚动到顶部不够平滑

wfveoks0  于 2022-12-18  发布在  jQuery
关注(0)|答案(6)|浏览(263)

我正在使用这个脚本滚动到顶部按钮:

$(document).ready(function(){
    $(".upp").click(function(){
        $('html, body').animate({scrollTop: '0px'}, 1200);
    });
});

它将在动画时到达顶部,但动画不平滑enough.it在某些部分跳跃,然后滑动到顶部。我甚至尝试将值从1200增加到5000,但它在某些点跳跃时滚动。我使用的是简单的jquery库(最新版本)。您认为添加jquery UI会解决任何问题吗?请帮助。

e0uiprwp

e0uiprwp1#

我认为最好的办法是利用.animate()easing选项
From the documentation

放松

.animate()的其余参数是一个字符串,用于命名要使用的缓动函数。缓动函数指定动画在动画中不同点的速度。jQuery库中仅有的缓动实现是默认的(称为swing)和以恒定速度进行的(称为linear)。使用插件可以获得更多缓动函数。最值得注意的是jQuery UI suite .

$(".upp").click(function(){
    $('html, body').animate({scrollTop: '0px'}, 1200, 'linear');
});
3yhwsihp

3yhwsihp2#

试试这个:

$('html, body').animate({ scrollTop: $('.docs').offset().top}, 2000);
eqqqjvef

eqqqjvef3#

这不是缓动或动画问题。

流畅度取决于你的内容。就是这样。
如果你的网站图片太多,滚动会很痛苦。图片背景......不要想太多高质量的固定图片背景和平滑滚动......浏览器处理不好。
我发现的唯一的变通办法是完全废弃滚动,并通过改变容器的边距自己实现一个假的滚动。使用CSS3过渡通常是平滑的,即使是沉重的网站。但这通常不值得麻烦...

更新

如果剥离图像后仍然很慢,那么问题显然出在视差代码上。看看瓶颈。找出哪些帧导致延迟。看看是否可以优化代码。减少对DOM的引用?也许缓存一些元素?简化一些数学运算?

x3naxklr

x3naxklr4#

您应该使用CSS3转换:{原始演示站点:http://mitgux.com/demo/smooth-scroll-to-top-using-css3-animations/index.php }
DEMO

$('a').click(function (e) {
    e.preventDefault();
    $("body").css({
      "margin-top": -$(this).offset().top+"px",
      "overflow-y": "scroll", // This property is posed for fix the blink of the window width change 
    });
    $(window).scrollTop(0);
    $("body").css("transition", "margin-top 1.2s ease");
    $("body").css("margin-top", "0");
    $("body").on("webkitTransitionEnd transitionend msTransitionEnd oTransitionEnd", function () {
        // Remove the transition property
        $("body").css("transition", "none");
    });
});
v6ylcynt

v6ylcynt5#

<a href="javascript:" id="return-to-top"><i class="glyphicon glyphicon-chevron-up" aria-hidden="true"></i></a>
//*** Scroll to Top *** use with less *** use with html ***
    $(window).scroll(function() {
        if ($(this).scrollTop() >= 50) {        // If page is scrolled more than 50px
            $('#return-to-top').fadeIn(200);    // Fade in the arrow
        } else {
            $('#return-to-top').fadeOut(200);   // Else fade out the arrow
        }
    });
  
    $('#return-to-top').on('click', function(event) {
        event.preventDefault();
        $('html, body').animate({
          scrollTop: $('html, body').offset().top,
        },'linear');
    });//End Scroll to Top
x3naxklr

x3naxklr6#

这将帮助您进行平滑滚动:

$('a').click(function() {

    //For testing moving the scroller to the top
    $('div').scrollTop(0);

    //Scroll to bottom
    $('div').animate({scrollTop: $('div').get(0).scrollHeight}, 3000);

   //Prevent Default
   return false;
});

演示:http://jsfiddle.net/codebombs/GjXzD/

相关问题