zoukankan      html  css  js  c++  java
  • safari坑之 回弹

    博客地址: https://www.seyana.life/post/20


    今天在使用safari浏览博客的时候,

    发现在拉至顶部并产生回弹之后,头部导航隐藏了,

    除非在上拉的时候,刚好达到顶部而不超出产生回弹才会正常显示

    这是博客原来隐藏显示头部导航的逻辑

    fix: {
      inserted(el) {
        let beforeScrollTop = document.documentElement.scrollTop ||
            window.pageYOffset ||
            window.scrollY ||
            document.body.scrollTop
        window.addEventListener('scroll', _.throttle(() => {
          const afterScrollTop = document.documentElement.scrollTop ||
                window.pageYOffset ||
                window.scrollY ||
                document.body.scrollTop
          const delta = afterScrollTop - beforeScrollTop
          if (delta === 0) return false
          delta > 0
            ? el.classList.add('fixed')
          : el.classList.remove('fixed')
          setTimeout(() => {
            beforeScrollTop = afterScrollTop
          }, 0)
        }, 200))
      },
        unbind() {
          window.onscroll = null
        }
    }
    

    可以看到主要逻辑是根据scrolltop前后变化值来改变导航栏样式,

    把前后的scrolltop都打印出来,观察下过程值

    console.log("after"+afterScrollTop)
    console.log("before"+beforeScrollTop)
    

    chrome中正常情况下,回弹不会改变scrolltop的值

    image-20200306190512824

    而在safari中,拉至顶部scrolltop是会变负的ˊ_>ˋ

    image-20200306190912004

    知道问题在哪,解决就很简单了,给两位朋友套个abs就好

  • 相关阅读:
    正则表达式
    简单的js拖动
    asp.net网站安全常见问题与防范
    Jquery操作select、checkbox、radio详细讲解
    利用ListView自定义高效分页
    文件上传
    Sql 分区问题
    封装读取配置文件类
    TypeConverter学习
    构造AJAX参数, 表单元素JSON相互转换
  • 原文地址:https://www.cnblogs.com/mckc/p/12443285.html
Copyright © 2011-2022 走看看