vux-ui的ViewBox的坑

链接 https://doc.vux.li/zh-CN/components/view-box.html

该组件为100%高布局,可以解决部分键盘输入的问题,但是同时会在safari中出现向下滚动时无法自动隐藏url工具栏和底部栏的问题。

viewBox里元素定位为absolute,效果等同于fixed

使用时需要设置 html, body 高为100%:

 

html, body {
  height: 100%;
  width: 100%;
  overflow-x: hidden;
}

 

view-box所有父div也需要为100%高度:

<div style="height:100%;">
  <view-box ref="viewBox">
    <x-header slot="header" style="width:100%;position:absolute;left:0;top:0;z-index:100;"></x-header>
    <router-view></router-view>
    <tabbar slot="bottom"></tabbar>
  </view-box>
</div>

如果你想保存滚动距离,推荐使用vuex实现,在特定pathscrollBody监听scroll事件,并获取滚动距离保存到vuexstate里。示例可以参考vux源码的App.vue

现在就是使用 vue 的keep-alive来完成记录列表滚动条问题

 watch: {
      $route (to, from) {
        let scrTop = this.$refs.viewBox.getScrollTop()
        // 从列表到具体文章时保存之前的滚动距离
        if (to.name === 'detail') {
          this.$refs.viewBox.scrollTo(0)
          console.warn('从列表到具体文章时保存之前的滚动距离 this.$refs.viewBox.getScrollTop: ' + scrTop)
          this.$store.commit('SetScrollTop', scrTop)
        }
        // 从文章退回列表跳转到之前的位置
        if (from.name === 'detail') {
          this.$nextTick(() => {
            this.$refs.viewBox.scrollTo(store.getters.scroll_top)
          })
          console.warn('从文章退回列表 this.states.scrollTop: ' + store.getters.scroll_top)
//          this.$refs.viewBox.scrollTo(store.getters.scroll_top)
        }
      }
    }

我之前没加 this.$nextTick 滚动位置一直不对 今天分享到这里

转载 https://www.51csdn.cn/article/317.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值