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 相关文章推荐
用Javscript实现表单复选框的全选功能
May 25 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
Dec 22 Javascript
jQuery标签编辑插件Tagit使用指南
Apr 21 Javascript
总结JavaScript中布尔操作符||与&amp;&amp;的使用技巧
Nov 17 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
Jun 02 Javascript
JS生成一维码(条形码)功能示例
Jan 19 Javascript
javascript表达式和运算符详解
Feb 07 Javascript
vue中页面跳转拦截器的实现方法
Aug 23 Javascript
Vue-cli项目获取本地json文件数据的实例
Mar 07 Javascript
angular6的响应式表单的实现
Oct 10 Javascript
angular4中引入echarts的方法示例
Jan 29 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
Dec 28 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
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
mayfish 数据入库验证代码
2010/04/30 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
2016/04/11 PHP
一个简单的js动画效果代码
2010/07/20 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
2017/04/01 jQuery
vue.js input框之间赋值方法
2018/08/24 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
解决vue-loader加载不上的问题
2020/10/21 Javascript
Python中的getopt函数使用详解
2015/07/28 Python
详解Python的Lambda函数与排序
2016/10/25 Python
Zookeeper接口kazoo实例解析
2018/01/22 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
如何在python中执行另一个py文件
2020/04/30 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
Django视图类型总结
2021/02/17 Python
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
Under Armour瑞典官方网站:美国高端运动科技品牌
2018/11/21 全球购物
安全资金保障制度
2014/01/23 职场文书
物流仓管员岗位职责
2015/04/01 职场文书
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python