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 相关文章推荐
top.location.href 没有权限 解决方法
Aug 05 Javascript
JavaScript中json使用自己总结
Aug 13 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
Dec 09 Javascript
js实现弹窗插件功能实例代码分享
Dec 12 Javascript
浅析js预加载/延迟加载
Sep 25 Javascript
介绍一个简单的JavaScript类框架
Jun 24 Javascript
js运动应用实例解析
Dec 28 Javascript
vuejs事件中心管理组件间的通信详解
Aug 09 Javascript
微信小程序实现自定义picker选择器弹窗内容
May 26 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
Sep 18 Javascript
Vue动态生成表格的行和列
Jul 18 Javascript
js 数组 fill() 填充方法
Nov 02 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
浅析PHP数据导出知识点
2018/02/17 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
new Date()问题在ie8下面的处理方法
2014/07/31 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
2016/01/05 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
React实践之Tree组件的使用方法
2017/09/30 Javascript
iview在vue-cli3如何按需加载的方法
2018/10/31 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
Python中常用信号signal类型实例
2018/01/25 Python
详解Python with/as使用说明
2018/12/13 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
python 实现两个npy档案合并
2020/07/01 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
物业总经理岗位职责
2014/02/28 职场文书
大学生自我评价范文
2015/03/03 职场文书
小学感恩节活动总结
2015/03/24 职场文书
2015年信访工作总结
2015/04/07 职场文书
2015年导购员工作总结
2015/04/25 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
Redis入门基础常用操作命令整理
2022/06/01 Redis