通过滚动调整容器位置

adjusting container position with scrolling

本文关键字:位置 整容 调整 滚动      更新时间:2023-09-26

我试图使它使div容器中的一组元素不断出现在Viewport中。我尝试了几种不同的方法,但它们似乎有重新粉刷的问题。

问题:有什么主要的优化来提高性能和消除突出的视觉副作用吗?如果没有,还有其他方法吗?

第一种方法:

    $(viewport).scroll(function ()
    {
        m_grid.css({ 'marginTop': viewport.scrollTop() + 'px' });
    })

这个会引起微小的震动效果,对用户来说很明显。

第二种方法:

  • 在内容的下面和上面放置一个div,用一些基本的数学方法收缩和扩展它们,以填充可滚动容器的未使用空间。

这种方法的问题是,它会导致内容的边缘闪烁最有可能是由于不断调整大小。

第三种方法:

  • 在原始滚动条的位置直接放置一个模仿滚动行为的div,然后简单地绑定滚动事件,将它们转发到实际的容器。

这个的问题是,由于实际执行滚动的div是假的,因此鼠标滚轮将无法使用,因为当鼠标悬停在viewport中的元素上时,它将没有焦点。

对改进或替代方法有什么想法吗?它必须以性能为中心

你不需要JavaScript,你可以用CSS。例如:

#viewport { 
    position: relative;
}
#m_grid {
    position: fixed;
    top: 0px;
}

David Walsh有一个position: fixed的演示页面。