vue通过滚动行为实现从列表到详情,返回列表原位置的方法


Posted in Javascript onAugust 31, 2018

vue项目滚动行为

场景:项目中,从列表进入详情,再从详情返回列表时,想直接定位到离开时的位置。

列表页点击某一个进入到详情页:

vue通过滚动行为实现从列表到详情,返回列表原位置的方法

进入到详情页:

vue通过滚动行为实现从列表到详情,返回列表原位置的方法

从详情页点击返回到列表页到离开的位置:

vue通过滚动行为实现从列表到详情,返回列表原位置的方法

实现方式一:html5 history模式

1在路由设置router/index.js中,设置组件的元信息被缓存。(keepAlive:true),并修改mode模式为history。

export defaultnewRouter({
mode: 'history' // 默认hash
 routes: [
// ***************** 列表组件 ******************** //
 {
  path: '/',
  name: list,
  component: list,
  meta: {
  keepAlive: true
  }
 }

2该组件路由被匹配显示的方式:

<keep-alive>
 <router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

实现方式二:监听scrollTop, js原始写法(组件同样需要设置缓存keep-alive)

1在组件的data中定义一个scrollTop属性,用来记录监听的scrollTop。

2在created或者mounted钩子里添加监听事件。

mounted () {
 document.addEventListener('scroll',this.handelscroll)
},

3在methods方法中定义这个handelscroll方法,并将监听的scrollTop赋值给data中的scrollTop()

handelscroll() {
 this.scrollTop = document.body.scrollTop|| document.documentElement.scrollTop || window.pageYOffset
},

4在deactivated钩子里记录当前的scrolltop(即从列表页进入详情页)

deactivated (){
 sessionStorage.setItem('scrollTop',this.scrollTop)
},

这里存到了sessionStorage里边,也可以使用状态管理。

5在activated钩子里,定位保存的scrollTop(即从详情页返回列表页)

activated () {
 document.body.scrollTop =document.documentElement.scrollTop = window.pageYOffset =sessionStorage.getItem('scrollTop')
},

以上这篇vue通过滚动行为实现从列表到详情,返回列表原位置的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery iframe操作详细解析
Nov 20 Javascript
js实现全屏漂浮广告移入光标停止移动
Dec 02 Javascript
jquery选择checked在ie8普通模式下的问题
Feb 12 Javascript
第一次动手实现bootstrap table分页效果
Sep 22 Javascript
解决Vue页面固定滚动位置的处理办法
Jul 13 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
Oct 25 Javascript
解决vue的变量在settimeout内部效果失效的问题
Aug 30 Javascript
JavaScript实现小球沿正弦曲线运动
Sep 07 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
Jan 18 jQuery
Element图表初始大小及窗口自适应实现
Jul 10 Javascript
vue 使用原生组件上传图片的实例
Sep 08 Javascript
在Vue中使用Select选择器拼接label的操作
Oct 22 Javascript
详解小程序输入框闪烁及重影BUG解决方案
Aug 31 #Javascript
javascript闭包的使用之按钮切换功能
Aug 30 #Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
Aug 30 #Javascript
基于Angularjs-router动态改变Title值的问题
Aug 30 #Javascript
从vue源码解析Vue.set()和this.$set()
Aug 30 #Javascript
vue-router动态设置页面title的实例讲解
Aug 30 #Javascript
解决vue select当前value没有更新到vue对象属性的问题
Aug 30 #Javascript
You might like
通过对php一些服务器端特性的配置加强php的安全
2006/10/09 PHP
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
简单实现php上传文件功能
2017/09/21 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
js分解url参数(面向对象-极简主义法应用)
2012/08/09 Javascript
JQuery获取各种宽度、高度(format函数)实例
2013/03/04 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
2015/09/06 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
2015/10/26 Javascript
Angular 理解module和injector,即依赖注入
2016/09/07 Javascript
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
JavaScript实现拖拽功能
2020/02/11 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
小程序实现密码输入框
2020/11/16 Javascript
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
Python实现的RSS阅读器实例
2015/07/25 Python
深入理解python函数递归和生成器
2016/06/06 Python
目前最全的python的就业方向
2018/06/05 Python
Django分页功能的实现代码详解
2019/07/29 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
Django执行源生mysql语句实现过程解析
2020/11/12 Python
python自动化发送邮件实例讲解
2021/01/04 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
致800米运动员广播稿
2014/02/16 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
组工干部演讲稿
2014/09/02 职场文书
甜品店创业计划书
2014/09/21 职场文书
2016党校学习心得体会范文
2016/01/07 职场文书
2019暑假学生安全口号
2019/06/27 职场文书
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python
Linux中如何安装并部署Redis
2022/04/18 Servers