vue--记住页面的滚动高度,再次返回该页面时自动滚动到当前高度

1、获取页面滚动高度

document.documentElement.scrollTop

2、什么时候获取页面滚动高度

路由变化,离开当前页面时,可以在以下3个方法内获取页面滚动高度并记下来

  • beforeDestroy
  • destroyed
  • beforeRouteLeave

3、保存页面滚动高度

经过第一步和第二步已经可以在离开该页面时获取页面滚动高度了,但是由于在此返回该页面时需要再次滚动到当前高度。因此,需要把整个高度给记下来。。。。。。那么记录到哪里呢?

我们知道可以在路由信息部分添加一个savePosition:{x:0,y:0},再通过scrollBehavior滚动到之前设置的高度上,我们就把它保存到这里

代码如下

 beforeRouteLeave(to, from, next) {
   
    this.$route.savedPosition = {
   
      x: 0<
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
获取当前页面高度也有多种方法,其中一种方法是使用JavaScript的 `document` 对象的 `body` 或 `documentElement` 属性的 `scrollHeight` 或 `clientHeight` 属性来获取当前页面高度。具体步骤如下: 1. 在JavaScript代码中使用 `document.body.scrollHeight` 或 `document.documentElement.scrollHeight` 来获取当前页面高度: ```javascript const pageHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); ``` 这里使用了 `Math.max` 函数来获取 `body` 和 `documentElement` 的 `scrollHeight` 属性中的最大值,因为有些浏览器中,`body` 和 `documentElement` 的 `scrollHeight` 属性可能不相等,而我们需要获取的是两者之间的最大值。 2. 如果需要获取当前可见部分的页面高度,可以使用 `document.body.clientHeight` 或 `document.documentElement.clientHeight` 来获取: ```javascript const visibleHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight); ``` 这里同样使用了 `Math.max` 函数来获取 `body` 和 `documentElement` 的 `clientHeight` 属性中的最大值,因为有些浏览器中,`body` 和 `documentElement` 的 `clientHeight` 属性可能不相等,而我们需要获取的是两者之间的最大值。 另外,如果要实获取页面高度,可以使用 `window` 对象的 `resize` 事件来监听窗口大小的变化,并在事件触发重新计算页面高度。 例如: ```javascript window.addEventListener('resize', function() { const pageHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); const visibleHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight); console.log('当前页面高度为:' + pageHeight); console.log('当前可见部分页面高度为:' + visibleHeight); }); ``` 这样在浏览器窗口大小改变,就会自动更新页面高度并输出到控制台中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值