扣丁学堂HTML5培训之vue项目设置scrollTop不起作用汇总

2018-12-25 14:22:07 664浏览

今天扣丁学堂HTML5培训老师给大家介绍一下关于vue项目设置scrollTop不起作用的详细介绍,首先在开发中,遇到这样一个情景。一个页面中有三个模块,每个模块对应一个标题,每个模块内容都很长,所以需要点击当前模块对应的标题滚动到模块所在位置,我想的方案是获取到每个模块距离文档顶部的距离,然后将值赋给对应要滚动的元素。步骤如下:



首先给每个模块一个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)
   })
  }
}

以上就是关于扣丁学堂HTML5培训之vue项目设置scrollTop不起作用汇总的全部内容,希望对大家的学习有所帮助,想要了解更多关于HTML5开发方面内容的小伙伴,请关注扣丁学堂HTML5培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的HTML5开发环境搭建视频,扣丁学堂老师精心推出的HTML5视频教程定能让你快速掌握HTML5从入门到精通开发实战技能。扣丁学堂H5技术交流群:673883249。



【关注微信公众号获取更多学习资料】


查看更多关于“HTML5开发技术资讯”的相关文章>>


标签: HTML5培训 HTML5视频教程 HTML5学习视频 HTML5在线视频 HTML5培训班

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号