美文网首页前端开发笔记让前端飞
监听 scroll 使元素产生吸顶效果

监听 scroll 使元素产生吸顶效果

作者: 后除 | 来源:发表于2018-09-12 17:02 被阅读1次

    一、判断滚动像素值

    1.1 window.scrollY(别名:pageYOffset)

    返回文档在垂直方向已滚动的像素值。为了跨浏览器兼容,请使用 window.pageYOffset 代替 window.scrollY

    1.2 Element.scrollTop

    获取或设置一个元素的内容垂直滚动的像素数。

    二、监听滚动事件

    document 视图或者一个 element 在滚动的时候,会触发元素的 scroll 事件。

    三、示例

    // 监听
    window.addEventListener('scroll', handleScroll)
    // 事件处理
    function handleScroll () {
        let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
        if (scrollTop > 92) {
            // 改变需要吸顶的元素样式为 position: fixed;...
        }
    }
    

    如有必要(例如 Vue 组件销毁时)需要删除监听事件 window.removeEventListener('scroll', handleScroll)

    四、sticky

    粘性定位元素(stickily positioned element)在屏幕范围(viewport)时该元素的位置并不受到定位影响(设置是 topleft 等属性无效),当该元素的位置将要移出偏移范围时,定位又会变成fixed,根据设置的 lefttop 等属性成固定位置的效果。

    position: sticky;
    top: 50px;
    

    目前这个属性兼容性不是很好,暂不建议在生产环境中使用(2018年09月12日16:54:54)。

    参考

    position - CSS:层叠样式表 | MDN

    CSS中position属性介绍(新增sticky)

    相关文章

      网友评论

        本文标题:监听 scroll 使元素产生吸顶效果

        本文链接:https://www.haomeiwen.com/subject/mqcbgftx.html