【问题标题】:when scrolling how to keep a div fixed without using position:fixed滚动时如何在不使用 position:fixed 的情况下保持 div 固定
【发布时间】:2013-02-08 05:13:11
【问题描述】:

我刚刚创建了一个不随页面其余部分滚动的侧边菜单,或者更确切地说,它通过使用滚动事件将自身重新定位到包含 div 的顶部,获取 scrollTop 值并使用一点点重新定位侧边菜单 div缓和。这一切都很好,但我宁愿它保持静止不动。所以问题是,有没有办法让它保持绝对静态而不使用位置:固定? (position:fixed 会导致其他需要 hack 解决的窗口大小调整问题。使用 absolute 也会导致同样的问题)

我目前的代码:

$('#mainbox').scroll(function() {
  var newTopMargin = $(this).scrollTop();
  $('#sidemenu').animate({marginTop: newTopMargin}, 100 );
});     

谢谢

【问题讨论】:

    标签: jquery position fixed scrolltop


    【解决方案1】:

    不要使用.animate。只需使用.css('marginTop', newTopMargin)。我想你也可以从.animate 中删除100

    【讨论】:

    • 不起作用。您必须等待 scrolltop 完成它的工作,这需要并导致生涩的重新定位,尽管速度相当快。这就是为什么我放轻松,以消除急躁。
    • @RobC 你可以阻止默认滚动,然后手动滚动窗口和 div
    • 不要认为这会起作用,文档说滚动事件会在内容位置发生变化时触发,所以为时已晚。我认为需要捕获其他一些事件,但不知道是哪个事件,甚至不知道它是否可能。
    • @RobC 也许这会有所帮助:stackoverflow.com/questions/4770025/…
    • 考虑到这一点,我认为滚动必须发生,以便有一个新的 scrollTop 值用于重新定位侧菜单。因此,使用禁用的滚动事件是不可能的。我想我必须将侧边菜单从滚动区域中取出,以使其在滚动时保持静止。
    猜你喜欢
    • 2018-08-02
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    相关资源
    最近更新 更多