第一种:使用vue-router

  history 模式下,用scrollBehavior 方法实现。

1 export default new Router({
2 mode: 'history',
3 routes: routeArray,
4 scrollBehavior (to, from, savedPosition) {
5 return { x: 0, y: 0 }
6 }
7 });

第二种:滚动条在非body上

  示例:

 1 <template>
2 <!--.wrap-box元素固定高度,内容溢出时,该元素纵向滚动-->
3 <div class="wrap-box" ref="scollElement">
4 <!--.box元素超出父元素.wrap-box高度时,页面会出现滚动条(滚动元素为.wrap-box)-->
5 <div class="box">
6 <!--内容区(切换不同模块)-->
7 <router-view></router-view>
8 </div>
9 </div>
10 </template>
11
12 <script>
13 export default{
14 name:'warp-box',
15 updated () { // 切换不同模块时触发
16 this.$nextTick(()=>{
17 if(this.$refs.scollElement){ // 滚动元素跳转到顶部
18 this.$refs.scollElement.scrollTop = 0;
19 }
20 })
21 }
22 }
23 </script>
24
25 <style>
26 .wrap-box{
27 height: 200px;
28 overflow-y: scroll;
29 }
30 </style>

第三种:基于第二种

  在模块化开发中,子模块存在翻页按钮,当页码切换时回到顶部。(此时的滚动元素在祖先模块中)

 1 <template>
2 <div class="item-one" ref="itemOne">
3 <div class="list-box">
4
5 </div>
6 <div class="page-box">
7 <el-pagination
8 @current-change="handleCurrentChange"
9 :current-page="currentPage"
10 :page-size="pageSize"
11 layout="total, sizes, prev, pager, next, jumper"
12 :total="total">
13 </el-pagination>
14 </div>
15 </div>
16 </template>
17
18 <script>
19 export default {
20 name:'item-one',
21 data(){
22 return{
23 total:0,
24 tableData:[],
25 pageSize:20,
26 currentPage:1,
27 }
28 },
29 methods:{
30 initData(){//初始化数据
31 // 初始化数据 total、tableData、pageSize、currentPage等
32 },
33 handleCurrentChange(currentPage){ // currentPage 改变时会触发
34 this.currentPage = currentPage;
35 this.initData();
36 /*
37 1、当前模块为子模块,当前模块中内容溢出时存在滚动条,滚动条在祖先模块中。
38 2、当进行翻页时,路由没有变化,无法使用路由跳转滚动条回到顶部的设置,
39 并且滚动条并不在body上。
40 3、解决方法:在子模块中找到祖先模块中的滚动元素。(使用$refs的属性offsetParent寻找滚动元素)
41 4、this.$el为当前组件的挂载元素(这里可以等同于this.$refs.itemOne)
42 */
43 // console.log(this.$el.offsetParent.offsetParent,'滚动元素');
44 this.$nextTick(()=>{
45 this.$el.offsetParent.scrollTop = 0;
46 //this.$el.offsetParent 仅限于当前示例模块的祖先模块基于方法二(一层模块嵌套)
47 //祖先模块的层次将决定offsetParent的获取,使用时应在控制台打印出,确认后使用
48 });
49 },
50 }
51 }
52 </script>
53
54 <style>
55 </style>

最新文章

  1. JAVA操作MongoDB数据库
  2. Moving Tables(贪心或Dp POJ1083)
  3. python 字符串长度
  4. IOS开发中如何实现自动检测更新APP
  5. 一个超级简单的HTML模板框架源代码以及使用示例
  6. php header函数要点
  7. &lt;legend&gt;标签
  8. 如何把PPT变小|PowerPoint文档减肥的几种方法
  9. JS-异常处理
  10. ViewPager不能高度自适应?height=wrap_content 无效解决办法
  11. 用Dedecms5.7的arclist标签调用文章内容
  12. monkey------模块组合测试
  13. 谈谈jQuery中的数据类型检测
  14. Day 09 函数基础
  15. java日志
  16. Java编程的逻辑 (69) - 线程的中断
  17. Python 去除列表中重复的元素
  18. VS2013平台安装Qt插件过程
  19. Spanning Tree Protocol (STP) in NetScaler Appliance
  20. Apache+tomcat配置动静分离(一个apache一个tomcat,没有做集群)

热门文章

  1. 面试必知道的APP测试adb命令
  2. openstack June all-in-one 安装手册
  3. rollup 开发环境搭建
  4. SpringMVC学习01(什么是SpringMVC)
  5. 安鸾CTF Writeup wordpress 01
  6. 题解—P3000 [USACO10DEC]Cow Calisthenics G
  7. labuladong 05.16 微信直播
  8. 【编程语言】Matlab 学习记录
  9. 第一次上传代码到gitee
  10. TypeScript 入门指南 【大白话】