vue页面设置滚动失败的完美解决方案(scrollTop一直为0)

 更新时间:2023年05月13日 11:04:31   作者:IT李十三  
这篇文章主要介绍了vue页面设置滚动失败的解决方案(scrollTop一直为0),本文通过场景分析实例代码相结合给大家介绍的非常详细,需要的朋友可以参考下

vue页面设置滚动失败的解决方案(scrollTop一直为0)

背景

希望页面能跳转到 某一位置用到了scrollTop属性。可是发现给某个div设置该属性后,一致为0。找了很多方案,但不都适合自己,或者说不知道是否适合。

怎么看我这个方法适不适合你,你可以尝试打印滚动条的位置,页面滚动后,再次打印滚动条的位置,如果一直为0的话,那我的的这个方法就可以解决你遇到的问题(说明你可能一直在打印窗口的滚动,而不是你真正需要控制滚动的那个元素).

误区:

并不是一股脑设置window.scrollTop就可以让页面滚动的,scrollTop可以用来设置滚动条位置,但是你得找对元素,在路由嵌套的vue页面中,window可能始终是没有滚动的,而你页面上显示的滚动条也只是页面中的元素的滚动条.

什么时候存在滚动条?

页面布局我们可以简单理解为 div盒子套div盒子。当内侧div盒子的高度大于外部时,外部的div就会出现滚动条。此时外部的div才具备scrollTop属性,否则你无论如何设置都为0. 这里隐藏了一些条件:

外部的div一定有高度,否则外部div将和内部div高度一致,不满足大于条件,所以不会出现滚动条。 外部div的 overflow:auto。hidden的情况下超出的部分被隐藏,无法出现滚动条。 如果想设置滚动条属性,一定要知道滚动条是哪个div产生的。

Why scrollTop==0?

总而言之,所有情况都是因为你给一个没有滚动条的元素设置滚动条的位置。 这就涉及到一个知识点的误区: "让页面滚动到指定位置这个需求,不一定是让整个window滚动,在路由嵌套的vue页面中,window可能始终是没有滚动的,产生滚动条的是一个设置了固定高度,且子元素的高度超出了他本身的元素. 这时候,元素才会产生滚动条,而你一股脑的给window设置滚动条位置,window也蒙了"

如何判断页面的滚动条是哪个div产生的?

滚动滚轮,看是哪一块元素在滚动(具体到div上).设置他的父元素的滚动条位置即可让其滚动.

场景1:如何删除body的滚动条,保留某个div的滚动条

body{overflow:hidden;}
div{
height:xxpx;    #小于子元素的高度
overflow-y:auto;
}

场景2:documentElement.scrollTop或者document.body.scrollTop 一直为0的情况

产生根本原因还是因为给没有scrollTop的元素设定了该值,直接原因是因为浏览器兼容问题。

场景2:documentElement.scrollTop或者document.body.scrollTop 一直为0的情况 产生根本原因还是因为给没有scrollTop的元素设定了该值,直接原因是因为浏览器兼容问题。

document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset

1 解决方法:在上面三个元素中逐一尝试,总有一款可以设置上。

到此这篇关于vue页面设置滚动失败的解决方案(scrollTop一直为0)的文章就介绍到这了,更多相关vue页面滚动失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue父组件监听子组件生命周期

    Vue父组件监听子组件生命周期

    这篇文章主要介绍了Vue父组件监听子组件生命周期,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • uni-app中App与webview双向实时通信详细代码示例

    uni-app中App与webview双向实时通信详细代码示例

    在移动应用开发中,uni-app是一个非常流行的框架,它允许开发者使用一套代码库构建多端应用,包括H5、小程序、App等,这篇文章主要给大家介绍了关于uni-app中App与webview双向实时通信的相关资料,需要的朋友可以参考下
    2024-07-07
  • vue中使用vue-pdf的方法详解

    vue中使用vue-pdf的方法详解

    这篇文章主要介绍了vue中使用vue-pdf的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • vue 使用localstorage实现面包屑的操作

    vue 使用localstorage实现面包屑的操作

    这篇文章主要介绍了vue 使用localstorage实现面包屑的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Vue3 路由配置与导航实战教程

    Vue3 路由配置与导航实战教程

    Vue Router 提供了强大的路由管理能力,帮助开发者轻松构建流畅、高效的单页应用,本文将带你深入探讨 Vue3 中的路由配置与导航操作,从安装到实战,手把手教你掌握 Vue Router 的使用技巧,需要的朋友可以参考下
    2025-03-03
  • uniapp中使用lottie实现JSON动画的操作步骤

    uniapp中使用lottie实现JSON动画的操作步骤

    这篇文章主要介绍了如何在项目中使用JSON动画组件,包括创建目录结构、下载JSON文件、编写自定义组件代码以及组件的使用方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-01-01
  • Vue监听使用方法和过滤器实现

    Vue监听使用方法和过滤器实现

    这篇文章主要介绍了Vue监听使用方法和过滤器实现,过滤器为页面中数据进行强化,具有局部过滤器和全局过滤器
    2022-06-06
  • vue表单绑定实现多选框和下拉列表的实例

    vue表单绑定实现多选框和下拉列表的实例

    本篇文章主要介绍了vue表单绑定实现多选框和下拉列表的实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • vue require.context()的用法实例详解

    vue require.context()的用法实例详解

    require.context是webpack提供的一个api,通常用于批量注册组件,下面这篇文章主要给大家介绍了关于vue require.context()用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • 使用Vue CLI配置代码压缩、加密和混淆功能示例代码

    使用Vue CLI配置代码压缩、加密和混淆功能示例代码

    这篇文章主要介绍了使用Vue CLI配置代码压缩、加密和混淆功能,通过配置 vue.config.js 文件,我们可以使用 Vue CLI 轻松实现对 Vue 应用程序代码的压缩、加密和混淆,需要的朋友可以参考下
    2023-06-06

最新评论