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

这篇具有很好参考价值的文章主要介绍了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也蒙了"

vue页面设置滚动失败的解决方案(scrollTop一直为0)
如何判断页面的滚动条是哪个div产生的?

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

场景1:如何删除body的滚动条,保留某个div的滚动条
body{overflow:hidden;}

div{
height:xxpx;    #小于子元素的高度
overflow-y:auto;
}
场景2:documentElement.scrollTop或者document.body.scrollTop 一直为0的情况

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

document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset
场景三:去掉元素的滚动条,保留滚动功能

我的这篇博客中有写:

去掉滚动条,保留滚动功能https://blog.csdn.net/weixin_64530670/article/details/132162424文章来源地址https://www.toymoban.com/news/detail-442991.html

到了这里,关于vue页面设置滚动失败的解决方案(scrollTop一直为0)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue项目切换页面白屏的解决方案

    问题描述 1、页面切换后白屏,同时切换回上一个页面同样白屏 2、刷新后正常显示 3、有警告: Component inside Transition renders non-element root node that cannot be animated 解决方法 Transition中的组件呈现不能动画化的非元素根节点 也就是说,组件内必须有一个根元素 之前: 现在:  原来

    2024年02月08日
    浏览(33)
  • word横向页面侧面页码设置及转pdf后横线变竖线的解决方案

           在处理材料的时候,会遇到同一个文档里自某一页开始,页面布局是横向的,这时候页码要设置在侧面,方法是双击页脚,然后在word工具栏上选择 “插入”——“文本框”——“绘制竖版文本框” ,然后在页面左侧绘制一个文本框,如下图:        绘制完之后,

    2024年02月13日
    浏览(106)
  • Vue路由模式(history模式 刷新页面空白解决方案)

    vue路由的三种模式 Hash模式 、 History模式 、 abstract 模式 Vue3: Hash 模式是用 createWebHashHistory() 创建的: Vue2 它在内部传递的实际 URL 之前使用了一个哈希字符(#)。由于这部分 URL 从未被发送到服务器,所以它不需要在服务器层面上进行任何特殊处理。不过,它在 SEO 中确实有

    2024年02月12日
    浏览(49)
  • Vue2嵌入HTML页面空白、互相传参、延迟加载等问题解决方案

    一、需求分析       最近做的一个用H5加原生开发的html项目,现需要集成到Vue2.0项目里面来。遇到的相关问题做个记录和总结,以便能帮到大家避免踩坑。 二、问题记录 1、页面空白问题      将html页面通过iframe的方式嵌入进来之后,发现页面是空白的,不显示任何元素,

    2024年02月13日
    浏览(28)
  • Vue 打包 chunk-vendors.js 文件过大导致页面加载缓慢解决方案

    前言 顾名思义, chunk-vendors.js 是捆绑所有不是自己的模块,而是来自其他方的模块的捆绑包,它们称为第三方模块或供应商模块。 通常,它意味着(仅和)来自项目 /node_modules 目录的所有模块,会将所有 /node_modules 中的第三方包打包到 chunk-vendors.js 中。 将所有的第三方包集

    2024年02月16日
    浏览(40)
  • 一个滚动框高度动态计算解决方案

    需求描述,一个嵌套了很多层div或者其他标签的内容框,而它的外层没有设置高度,或者使用百分比,而本容器需要设置高度来实现滚动,要么写死px高度,但是不能自适应,此时需要一个直系父容器(该容器要动态计算高度)包裹,这里的解决方法是,设计一个高阶方法,

    2024年02月11日
    浏览(27)
  • uni-app弹窗列表滚动, 弹框下面的内容也跟随滚动解决方案

    滑动弹窗里的列表,弹框下面的内容也会跟着滑动,导致弹窗中的列表不能正常滚动 1.弹窗组件代码,需要在最外层的view中加入@touchmove.stop.prevent=\\\"moveHandle\\\",且弹窗中需要滚动的列表要使用scroll-view标签包裹起来,且scroll-y 属性不能忘记加。  

    2024年02月12日
    浏览(35)
  • Keepalived 启动失败解决方案

    启动Keepalived服务时发现启动失败,于是查看了日志 (/var/log/messages)如图所示   这条信息--WARNING - interface eth0 for vrrp_instance VI_1 doesn\\\'t exist 说明我们的网卡配置没对上号,本虚拟机的网卡配置文件是ens33,不匹配,所以要去修改配置文件  /etc/kkepalived/keepalived.conf 又发现 配置

    2024年02月13日
    浏览(24)
  • vscode远程连接失败解决方案

    1、在vscode SSH扩展设置中配置config文件的绝对位置, 该文件一般位于.ssh文件夹中( C:Users你的用户名.sshconfig  ) 2、删除known_hosts文件,该文件一般和config配置文件一样在.ssh文件夹中( C:Users你的用户名.sshknown_hosts  )  3、若删除了该文件之后仍然连接失败,尝试在命

    2024年02月09日
    浏览(41)
  • mongodb本地连接失败解决方案

    启动项目时,本地连接mongodb失败 这个是本地服务没有启动 其实我也挺奇怪,我明明设置的是自动启动 db作为数据库目录 log作为mongodb的服务日志目录 mongod --dbpath …/data/db 使用第二个方案相当于新建了一个数据的存储位置,以前链接的数据库都没有了。 所以,如果想链接以

    2024年02月15日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包