jquery - 将位置更改为固定时防止 div 滚动回顶部

标签 jquery html css

我有一个包含照片名称列表的 div。单击名称时,会显示另一个 div(在第一个 div 之外)及其下方的照片和评论。当第二个 div 滚动时(使用主窗口滚动条),我不希望第一个 div 滚动,它应该保持原样。因此,我一打开照片 div,就将第一个 div 的位置从 absolute 更改为 fixed。到目前为止一切顺利,效果很好。

但是,当第一个 div 在打开照片之前滚动时,将此 div 设置为 fixed 会导致它跳回顶部,而我希望它保持在原来的位置。有没有办法做到这一点?为什么会跳到顶部?

基本上我想实现与在 Facebook 中显示照片相同的效果。背景卡住在原处,而照片区域可以滚动。

谢谢!

最佳答案

固定的 div 跳到顶部,因为没有顶部/底部值基本上意味着它们位于 0。

现在,为防止这种情况,您必须设置当前位置(在 position 更改为 fixed 之前)相对于窗口 (这是关键部分)。

查看我的 jsfiddle

其中的 jquery 部分:

$('#click').click(function() {
    var ftop = $('#fixer').offset().top - $(window).scrollTop();
    var fleft = $('#fixer').offset().left;
    $('#fixer').css({position: 'fixed', left: fleft + 'px', top: ftop + 'px'});
});

在固定位置之前,计算当前顶部坐标[offset().top - (window).scrollTop],然后传递给#fixer' s top 值。 $(window).scrollTop() 很重要,因为它确保 #fixer 在固定时始终处于视点。

关于jquery - 将位置更改为固定时防止 div 滚动回顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5492824/

相关文章:

css - 将弹出框设置为固定位置

jquery - 在响应式背景图像上更改一次背景图像

javascript - 将变量放入 Jquery 选择器中

javascript - 如何在整个 Bootstrap 中保持事件链接突出显示?

php - 列表项在一行中正确显示,但在其他一些行中不正确

jquery - 媒体宽度> 768px 时显示隐藏 bootstrap 3 offcanvas 时的 CSS3 动画

javascript - 如何仅使用上面的 div 和下面的 div 动态更新 div 的最大高度?

javascript - 使用 AJAX 加载的选项卡

html - Bootstrap 不会在一行中获得 4 个 DIV

javascript - 带有JS确认对话框的广播按钮验证