导航栏中的文本/徽标在滚动时显示为摆动/振动

Text/Logo inside Navbar appears to wiggle/vibrate on Scroll

本文关键字:显示 振动 滚动 文本 导航      更新时间:2023-09-26

我编写了代码,使导航栏中的徽标在滚动时扩展合同,很像《华尔街日报》网站的工作方式。然而,当我滚动它时,现在会导致徽标和导航栏内的其他元素摆动/振动。

Jquery:

 $(window).on('scroll', function () {
    var scrollTop = $(window).scrollTop();
    if (scrollTop > 50) {
        $('#logo').stop().animate({height: "50px"},100);
        $('#nav').css({height: "110px"});
    }
    else {
         $('#logo').stop().animate({height: "70px"},100);
         $('#nav').css({height: "130px"});
    }
 });

CSS:

#logo {
    height: 70px;
    width: auto;
    margin: auto;
    display: block;
    margin: auto;
}
#nav{
    display: block;
    max-width: 100%;
    height: 120px;
    position: relative;
    margin: 0;
    background-color: rgba(249,249,249,1);
    font-family: MyriadPro-RegularImport;
}

我建议使用jQuery添加一个类,然后为动画使用CSS转换:

$('#logo').addClass('scrolled');

CSS:

#logo {
  height: 70px;
  transition: all 200ms ease-out; // using 'all' so that all properties are animated
}
#logo.scrolled {
  height: 50px;
}

CSS动画将更流畅,更容易排除故障。