vue项目设置scrollTop不起作用(总结)


Posted in Javascript onDecember 21, 2018

今天在开发中,遇到这样一个情景。一个页面中有三个模块,每个模块对应一个标题,每个模块内容都很长,所以需要点击当前模块对应的标题滚动到模块所在位置。

我想的方案是获取到每个模块距离文档顶部的距离,然后将值赋给对应要滚动的元素。 步骤如下:

首先给每个模块一个id,例如:

<div class="module module1" id="anchor-0">
<div class="module module1" id="anchor-1">
<div class="module module1" id="anchor-2">

点击每个标题的时候获取到当前模块的id

<a v-for="(navItem,index) in navData" :key="index" class="navItem" :class="{active:index == i }" @click="goAnchor('#anchor-'+index)">{{navItem.name}}</a>

methods: {
   // tab点击滚动
   goAnchor(val) {
    let anchor = this.$el.querySelector(val);
 }

*最后就可以获取每个模块距离文档顶部的距离了,然后赋值给对应要滚动的元素就可以了

methods: {
   // tab滚动
   goAnchor(val) {
    let anchor = this.$el.querySelector(val);
    this.$nextTick(() => {
     document.querySelector(".el-main").scrollTop = anchor.offsetTop;
    });
   },

切记:在这里一定要加上this.$nextTick()方法,否则document.querySelector(“.el-main”).scrollTop的值永远为0,不会赋值成功的!

container.scrollTop 一直为0不能赋值的解决方法

watch: {
  historyList () {
   this.$nextTick(() => {
    const container = this.$el.querySelector('.scrolldivmain')
    console.log(container.scrollHeight)
    console.log(container.scrollTop)
    this.$refs.scrolldiv.scrollTo(0, container.scrollHeight + 'px')
    container.scrollTop = container.scrollHeight
    container.scrollTop(0, container.scrollHeight)
    console.log(container.scrollTop) // container.scrollTop 一直为0
   })
  }
 }

注意点

确定下滚动条是在哪里显示的

有个方法判断下:

window.addEventListener('scroll', () => {
    var scrollTop = this.$el.querySelector('.scrolldivmain')
    // console.log(scrollTop.scrollHeight)
    console.log(scrollTop.scrollTop) // 查看打印的值是否有变化 如果有 则说明滚滚动条在这个标签中
    // scrollTop.scrollTop = scrollTop.scrollHeight // 可以尝试下 滚动滚动条。一直在底部则可以设置成功
  }, true)

解决方案

需要用到的地方 调用this.scrollToBottom()即可

<!--element-ui-->

<el-main class="scrolldivmain">
  some code
</el-main>
methods: {
 // 滚动到底部
  scrollToBottom () {
   this.$nextTick(() => {
    setTimeout(() => {
     var scrollTop = this.$el.querySelector('.scrolldivmain')
     scrollTop.scrollTop = scrollTop.scrollHeight
    }, 13)
   })
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用jquery来定位
Feb 20 Javascript
firefox中用javascript实现鼠标位置的定位
Jun 17 Javascript
基于jquery的tab切换 js原理
Apr 01 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
Jun 24 Javascript
node.js中的fs.fchown方法使用说明
Dec 16 Javascript
理解javascript对象继承
Apr 17 Javascript
全面介绍javascript实用技巧及单竖杠
Jul 18 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
Feb 18 Javascript
解决微信二次分享不显示摘要和图片的问题
Aug 18 Javascript
更优雅的微信小程序骨架屏实现详解
Aug 07 Javascript
vue实现抽屉弹窗效果
Nov 15 Javascript
详解如何解决使用JSON.stringify时遇到的循环引用问题
Mar 23 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
Dec 21 #Javascript
JS二级菜单不同实现方法分析【4种方法】
Dec 21 #Javascript
vue中eslintrc.js配置最详细介绍
Dec 21 #Javascript
angularjs http与后台交互的实现示例
Dec 21 #Javascript
JS执行控制之节流模式实例分析
Dec 21 #Javascript
vue favicon设置以及动态修改favicon的方法
Dec 21 #Javascript
微信小程序自定义键盘 内部虚拟支付
Dec 20 #Javascript
You might like
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
使用PHP强制下载PDF文件示例
2014/01/17 PHP
php计算两个坐标(经度,纬度)之间距离的方法
2015/04/17 PHP
laravel实现前后台路由分离的方法
2019/10/13 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
js实现幻灯片效果(基于jquery插件)
2013/11/05 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
jQuery EasyUI datagrid实现本地分页的方法
2015/02/13 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
python中sleep函数用法实例分析
2015/04/29 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
基于python的Paxos算法实现
2019/07/03 Python
Django的models模型的具体使用
2019/07/15 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
Java如何读取CLOB字段
2013/10/10 面试题
售后服务科岗位职责范文
2013/11/13 职场文书
酒后驾驶检讨书
2014/01/27 职场文书
家长通知书教师评语
2014/04/17 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
狮子林导游词
2015/02/03 职场文书
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python