Javascript 在Google Chrome以外的浏览器中提高JS滚动动画的性能

Javascript 在Google Chrome以外的浏览器中提高JS滚动动画的性能,javascript,css,performance,animation,scroll,Javascript,Css,Performance,Animation,Scroll,我有一个非常好的动画,标题和标题缩小,最后保持固定的顶部。就我现在所知,这在纯CSS中是不可能的,需要Javascript。我有一个可行的解决方案,但是取决于浏览器,动画远不是平滑的。Chrome处理得最好,Firefox有点小问题Internet Explorer是一场灾难

我有一个非常好的动画,标题和标题缩小,最后保持固定的顶部。就我现在所知,这在纯CSS中是不可能的,需要Javascript。我有一个可行的解决方案,但是取决于浏览器,动画远不是平滑的。Chrome处理得最好,Firefox有点小问题Internet Explorer是一场灾难 我能做些什么来提高动画的性能吗?

也许是和我完全不同的方法

window.addEventListener('load',function(){
if($(“.sub header”)[0]){
window.addEventListener('scroll',函数(){
var scroll_top=$(窗口).scrollTop();
var font_size=Math.max(2,4-0.005*滚动顶部)+“rem”;
var padding=Math.max(1,4-0.01*scroll_top)+“rem 15px”;
变量标题高度=数学最大值(84330-0.5*滚动顶部);
var margin_top=数学最小值(664,84+收割台高度+滚动顶部)+“px”;
$('headline').css({'font-size':font-u-size,'行高]:font-u-size});
$(“.sub header”).css({'height':header_height}).find(“.container”).css({'padding':padding});
$(“#content”).css({'margin-top':margin_-top});
});
}
});
.navbar{
高度:84px;
}
.副标题{
颜色:#ffffff;
高度:330px;
边缘顶部:84px;
}
.副标题.集装箱{
身高:100%;
填充:4rem 15px;
}
.副标题h1{
字号:600;
字号:4rem;
线高:4rem;
}
#内容{
利润上限:414px;
填充:4REM0;
}

大字标题 次要标题 他说:“我的工作是在工作中完成的,我的工作是在工作中完成的,我的工作是在工作中完成的。”。在vero eos和accusam以及justo duo dolores和ea Reum。斯泰特·克莱塔·卡斯德·古伯格伦(Stet clita kasd gubergren),没有海洋保护区是属于同一领域的。他说:“我的工作是在工作中完成的,我的工作是在工作中完成的,我的工作是在工作中完成的。”。在vero eos和accusam以及justo duo dolores和ea Reum。斯泰特·克莱塔·卡斯德·古伯格伦(Stet clita kasd gubergren),没有海洋保护区是属于同一领域的。他说:“我的工作是在工作中完成的,我的工作是在工作中完成的,我的工作是在工作中完成的。”。在vero eos和accusam以及justo duo dolores和ea Reum。斯泰特·克莱塔·卡斯德·古伯格伦(Stet clita kasd gubergren),没有海洋保护区是属于同一领域的

在亨德雷特的两个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里。这是一位杰出的领袖,他是一位伟大的领袖

但是,在最低限度的利益下,我们必须在公共消费品的基础上,继续履行我们的义务。在亨德雷特的两个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里。他说:“我的工作是在工作中完成的,我的工作是在工作中完成的,我的工作是在工作中完成的。”。在vero eos和accusam以及justo duo dolores和ea Reum。斯泰特·克莱塔·卡斯德·古伯格伦(Stet clita kasd gubergren),没有海洋保护区是属于同一领域的。他说:“我的工作是在工作中完成的,我的工作是在工作中完成的,我的工作是在工作中完成的。”。在vero eos和accusam以及justo duo dolores和ea Reum。斯泰特·克莱塔·卡斯德·古伯格伦(Stet clita kasd gubergren),没有海洋保护区是属于同一领域的。他说:“我的工作是在工作中完成的,我的工作是在工作中完成的,我的工作是在工作中完成的。”。在vero eos和accusam以及justo duo dolores和ea Reum。斯泰特·克莱塔·卡斯德·古伯格伦(Stet clita kasd gubergren),没有海洋保护区是属于同一领域的

在亨德雷特的两个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里。这是一位杰出的领袖,他是一位伟大的领袖

但是,在最低限度的利益下,我们必须在公共消费品的基础上,继续履行我们的义务。在亨德雷特的两个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里,一个房间里。他说:“我的工作是在工作中完成的,我的工作是在工作中完成的,我的工作是在工作中完成的。”。在vero eos和accusam以及justo duo dolores和ea Reum。斯泰特·克莱塔·卡斯德·古伯格伦(Stet clita kasd gubergren),没有海洋保护区是属于同一领域的。Lorem ipsum Door sit amet,consetetur sadipscing eli
function scrollCallback() {
    var scroll_top = $(window).scrollTop();
    var font_size = Math.max(2, 4 - 0.005 * scroll_top) + "rem";
    var padding = Math.max(1, 4 - 0.01 * scroll_top) + "rem 15px";
    var header_height = Math.max(84, 330 - 0.5 * scroll_top);
    var margin_top = Math.min(664, 84 + header_height + scroll_top) + "px";
    $('#headline').css({'font-size': font_size, 'line-height': font_size});
    $(".sub-header").css({'height': header_height}).find(".container").css({'padding': padding});
    $("#content").css({'margin-top': margin_top});
  };

function debounce(f, ms) {
    let isCooldown = false;

    return function() {
      if (isCooldown) return;

      f.apply(this, arguments);

      isCooldown = true;

      setTimeout(() => isCooldown = false, ms);
    };
  };

window.addEventListener('load', function () {
    if ($(".sub-header")[0]) {
        window.addEventListener('scroll', debounce(scrollCallback, 100));
    }
});
 const scrollHandler = () => {
    var scroll_top = $(window).scrollTop();
    var font_size = Math.max(2, 4 - 0.005 * scroll_top) + "rem";
    var padding = Math.max(1, 4 - 0.01 * scroll_top) + "rem 15px";
    var header_height = Math.max(84, 330 - 0.5 * scroll_top);
    var margin_top = Math.min(664, 84 + header_height + scroll_top) + "px";
    $('#headline').css({
        'font-size': font_size,
        'line-height': font_size
    });
    $(".sub-header").css({
        'height': header_height
    }).find(".container").css({
        'padding': padding
    });
    $("#content").css({
        'margin-top': margin_top
    });
};
window.addEventListener('scroll', () => requestAnimationFrame(scrollHandler));