我正在尝试在用户滚动内容时添加一个浮动div,它几乎可以正常工作,但是在动画上的延迟很小,我需要在scrollTop到达浮动div时,浮动div应该与滚动一起进行动画处理

var $scrollingDiv = $("#scrollingDiv");

$(window).scroll(function(){
    var y = $(this).scrollTop(),
        maxY = $('#footer').offset().top,
        scrollHeight = $scrollingDiv.height();
    if(y< maxY-scrollHeight ){
        $scrollingDiv
        .stop()
        .animate({"marginTop": ($(window).scrollTop()) + "px"}, "fast" );
    }
});


Fiddle link

最佳答案

您可以更改两个问题:


使用JavaScript为DOM制作动画通常很慢。
将animate函数更改为CSS:transform:translateY()
从滚动功能之外的DOM中选择项目,因此只能完成
一旦。




 var $scrollingDiv = $("#scrollingDiv");
 var $footer = $('#footer');
 var $window = $(window);

$(window).scroll(function(){
    var y = $(this).scrollTop(),
        maxY = $footer.offset().top,
        scrollHeight = $scrollingDiv.height();
    if(y< maxY-scrollHeight ){
        $scrollingDiv
        .css({"transform": "translateY(" + ($window.scrollTop()) + "px)"});
    }
});





see the fiddle link here

09-19 02:32