第一种:使用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>

vue开发 回到顶部操作的更多相关文章

  1. Vue.之.回到顶部

    Vue.之.回到顶部 当页面出现上下滚动条时,页面右下角出现回到顶部功能. 在页面上添加如下DIV(写的CSS内部样式),这个DIV功能:出现滚动条往下滑动,就显示出来,反之隐藏.点击DIV快速回到顶 ...

  2. vue中回到顶部

    1. 回到顶部,使用 scrollIntoView 方法: Element.scrollIntoView方法滚动当前元素,进入浏览器的可见区域 该方法可以接受一个布尔值作为参数.如果为true,表示元 ...

  3. js实现回到顶部操作

    <a href="javascript:;" id="btn" title="回到顶部"></a> 样式: #btn ...

  4. vue 回到顶部的小问题

    今天在用vue项目中,实现回到顶部功能的时候,我写了一个backTop组件,接下来需要通过监听window.scroll事件来控制这个组件显示隐藏 因为可能会有其他的组件会用到这样的逻辑,所以将此功能 ...

  5. vue回到顶部组件

    html <template> <a href="javascript:;" class="toTop" @click="backT ...

  6. Android商城开发系列(五)—— 商城首页回到顶部和搜索框布局实现

    今天我们来开发商城的首页[输入搜索框]布局和点击右下角图片回到顶部的效果 搜索功能在App中很常见,尤其是在商城类的项目当中,一般都会提供很强大的搜索功能,App的搜索布局一般都是在App的顶部,如下 ...

  7. vue路由切换时内容组件的滚动条回到顶部

    在使用vue的时候会出现切换路由的时候滚动条保持在原来的位置,要切换路由的时候滚动条回到顶部才有更好的用户体验 1.当页面整体都要滚动到顶部的情况 router.afterEach(() => ...

  8. vue中的回到顶部

    <template> <div class="main"> <div class="content">灰色部分是内容部分&l ...

  9. vue开发中的"骚操作"

    前言 在与同事协作开发的过程中,见识到了不少"骚操作".因为之前都没用过,所以我愿称之为"高级技巧"! Vue.extend 在交互过程中,有个需求就是点击图标 ...

随机推荐

  1. Windows根据端口号查找对应的进程和服务

    需求 1,我们在Win10安装一些Web服务时,会发现默认端口被占用,比如443端口被占用,808端口被占用,那么如何找出占用这些默认端口的进程和对应的服务呢? 2,系统安装完成后,会有一些应用对外开 ...

  2. 通信协议,TCP/UDP对比:

    通信协议 协议:约定,比如在中国约定说普通话 网络通信协议:速率,传输码率,代码结构,传输控制... 问题:非常复杂 大事化小:分层 TCP/IP协议簇:实际上是一组协议 重要: TCP:用户传输协议 ...

  3. 网络图片下载,commons IO包

    网络图片下载,commons IO包 导入commons-io包 commons-io包下载路径: http://www.apache.org/ 项目下新建lib包,将lib包添加为库 实现多线程下载 ...

  4. MySQL学习02(操作数据库)

    操作数据库 结构化查询语句分类 名称 解释 命令 DDL(数据库定义语言) 定义和管理数据对象,例如数据库和数据表 create.drop.alter DML(数据操作语言) 用于操作数据库对象中所包 ...

  5. 计算机网络 中国大学MOOC 哈尔滨工业大学 习题答案

    转自 https://blog.csdn.net/qq_37514135/article/details/82733651 计算机网络作业题 第一章 第一题 如图所示网络.A在t=0时刻开始向C发送一 ...

  6. Spring全家桶--单数据源的配置

    前言 spring数据源的配置网络上有很多例子,这里我也来介绍一下单数据源配置的例子,基于SpringBoot的方式和原生的Spring的方式. 一.生成项目骨架(SpringBoot),运行一个简单 ...

  7. RocketMQ可视化控制台

    中午文档 https://github.com/apache/rocketmq-externals/blob/master/rocketmq-console/doc/1_0_0/UserGuide_C ...

  8. vs2019 实现C#调用c++的dll两种方法

    1.托管与非托管的区别 2.非托管类的实现 第一步:创建C++空项目(命名Caculate)添加一个类AddOperate 第二步:将C++代码编译成动态库dll 第三步:将dll拷贝到c#项目输入目 ...

  9. mybatis学习日志之总结

    一.介绍mybatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...

  10. (转)致Java程序员:你离架构师还差多远?

    转至:https://blog.csdn.net/ityouknow/article/details/82782965 几乎每个Java程序员心中,都有着成为架构师的技术追求.那么,成为Java架构师 ...