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批量控制form禁用的代码
Aug 06 Javascript
js中将String转换为number以便比较
Jul 08 Javascript
在Node.js应用中使用Redis的方法简介
Jun 24 Javascript
jQuery zTree树插件简单使用教程
Jan 10 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
Sep 11 Javascript
微信小程序学习笔记之本地数据缓存功能详解
Mar 29 Javascript
解决vue打包后vendor.js文件过大问题
Jul 03 Javascript
Vue项目实现换肤功能的一种方案分析
Aug 28 Javascript
Javascript Dom元素获取和添加详解
Sep 24 Javascript
layui的数据表格+springmvc实现搜索功能的例子
Sep 28 Javascript
在vue中利用v-html按分号将文本换行的例子
Nov 14 Javascript
AngularJS动态生成select下拉框的方法实例
Nov 17 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
PHP 和 MySQL 基础教程(二)
2006/10/09 PHP
跟我学Laravel之视图 &amp; Response
2014/10/15 PHP
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
基于JavaScript 类的使用详解
2013/05/07 Javascript
js 表单提交后按钮变灰的实例代码
2013/08/16 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
JavaScript禁止微信浏览器下拉回弹效果
2017/05/16 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
深入浅析angular和vue还有jquery的区别
2018/08/13 jQuery
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
python使用socket创建tcp服务器和客户端
2018/04/12 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
Python实现括号匹配方法详解
2020/02/10 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
违反学校规定检讨书
2014/01/18 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
考研经验交流会策划书
2015/11/02 职场文书
《花钟》教学反思
2016/02/17 职场文书
幼儿园科学课教学反思
2016/03/03 职场文书
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python