javascript - 滚动然后在更大的屏幕尺寸上修复 div 跳转

标签 javascript css position css-position

我有一个元素,我为其实现了“滚动然后修复”行为——当用户滚动超过某个点时,div 的位置从相对位置变为固定位置,页面上的其余内容滚动在上面。

它似乎工作得很好,直到我将窗口大小调整到大约 1700px 及以上——div 在它获得为其分配位置的类后跳了一点:固定,或者它似乎在之后获得位置:固定类它实际上应该。

如果有人知道我做错了什么,或者是什么导致了这种不一致的行为,我将不胜感激!

JS:

window.addEventListener('scroll', function() {

        if (window.scrollY >= 50 ){
            $('.carousel').addClass("fixed");

        } else {

            $('.carousel').removeClass("fixed");
        }

    }

减少:

.carousel{
  position: absolute;
  top: 0;
  left: 0;
  width:100%;
   &.fixed{
     position:fixed;
     top:-50px;
 }
}

最佳答案

为此,您可以使用 position: sticky;。只需将 .carousel 类中的 absolute 替换为 sticky 并删除所有 JS 逻辑。由于此方法是纯 CSS,您将获得流畅的体验。

.carousel {
    position: sticky;
    top: 0;
    left: 0;
    width: 100%;
    background-color: #840202;
    height: 100px;
}

请注意,此属性不是 widely supported

关于javascript - 滚动然后在更大的屏幕尺寸上修复 div 跳转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57728499/

相关文章:

javascript - 我想制作具有固定内容和滚动背景的页面?

javascript - CSS 条件元素,XHTML

html - 网页不缩放到视口(viewport)宽度

css - div背景半透明,不是内容?

javascript - 如何在 iPhone Safari 中获取触摸的 X/Y 位置?

javascript - d3 缩放 : prevent page zoom when using a touchscreen

javascript - 递归函数返回空数组

html - 表格宽度不适用于多行

javascript - 在鼠标点击的位置判断位置

css - 使用 div 创建带有空白/缺失单元格的 2 列表格布局