下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第JS实现页面滚动到关闭时的位置与不滚动效果目录滚动不滚动标题显而易见,要说两种情况:重新打开页面或者返回某个页面时滚动到上次离开时的位置,以及不滚动保持在顶部。
滚动
这也有两种情况:页面重新打开,与返回某个页面。
如果是前者,必定用cookie或者localStorage。或者麻烦一点的、在webview中用其他手段。总之这个必须有存储。
然后在组件的activited或是window.onload时取出存储内容改变scrollTop。非常牛逼。
对于原生页面,如果在关键位置没有图片和表格,可以尝试在onreadystatechange中完成,不必等到onload。
关于这点,背景和降级处理等具体可以参考笔者的这篇文章:点击跳转
若是第二种情况,则只需要临时缓存即可,这里拿vue演示一下:
有两个方案。其一,利用路由中的meta,在离开页面时缓存top信息
//router/index.js
path:"/user",
name:"user",
component:()=import("../views/user.vue"),
meta:{scrollTop:0,keepScroll:true}
//...
router.beforeEach((to,from,next)={
//记录需要缓存页面的滚动条高度
if(from.meta.keepScroll){
const$content=document.querySelector("#app");
constscrollTop=$content$content.scrollTop:0;
from.meta.scrollTop=scrollTop;
next();
});
然后在回到当前页面时拿到临时缓存,并赋值
//utils/index.js
exportconstgetScroll=vm={
constscrollTop=vm.$route.meta.scrollTop;
const$content=document.querySelector('#app');
if(scrollTop$content){
$content.scrollTop=scrollTop;
组件内
import*asutilfrom'@/utils/';
//...
activeted(){
//保持滚动条
util.getScroll(this);
其二,利用keep-alive缓存整个页面。但是仅限于没有实时数据变动的页面
template
divid="app"
keep-alive
router-viewv-if="$route.meta.keepAlive"/router-view
/keep-alive
router-viewv-if="!$route.meta.keepAlive"/router-view
/div
/template
路由配置里在需要被缓存的页面meta里配置keepAlive属性
{
path:'/index',
name:'index',
meta:{
title:'',
keepAlive:true,//此组件需要被缓存
component:()=import('@/components/index'),
组件内在beforeRouteLeave钩子函数中,将该页面的keepAlive属性设为false
beforeRouteLeave(to,from,next){
from.meta.keepAlive=false;
next();
然后需要在下一个页面进行配置,页面返回时设置上一个页面的keepAlive为true
beforeRouteLeave(to,from,next){
if(to.path=="/index"){
to.meta.keepAlive=true;
}else{
to.meta.keepAlive=false;
next();
不滚动
其实有的页面我们会发现,体验下来觉得并不想让重新进入时回到上一次浏览的地方。
理论上说这里不加上面提到的各种方法不就行了?其实不然。
「重新进入」也分两种情况:重新打开这个页面,和刷新页面。
前者大可不必关心。对于后者,在比如QQ内置浏览器中,短时间内重新打开相同页面的逻辑和普通刷新是一样的。
在浏览器中,普通刷新会记住用户上次的位置似乎是个惯例了。如何在页面刷新时保持在顶部呢?
浏览器提供了historyAPI实现。其兼容性还算不错,除了IE外基本目前使用的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 八分钟护理说课:老年护理要点分享
- 门诊护理团队建设与管理
- 应急物资储备管理操作手册
- 旋耕机安全操作与维修规程
- 化工企业双重预防机制建设指引
- 农残超标地块复种技术修复方案
- 护理手卫生的感染预防
- 手动喷雾器精准施药技术标准
- 太阳能杀虫灯安装位置布点方案
- 农产品品牌包装设计与防伪标识
- 苏州2025年江苏苏州市相城区卫健系统招聘备案制工作人员133人笔试历年参考题库附带答案详解
- 第六节 学生实验:设计制作简易直流电动机说课稿-2025-2026学年中职基础课-电工电子类-高教版(2021)-(物理)-55
- 2025年及未来5年中国RTP管行业市场供需格局及行业前景展望报告
- 智慧树知道网课《企业法务概论》课后章节测试满分答案
- 2024秋九年级化学上册 4.3 水的组成说课稿 (新版)新人教版
- 绿化保洁安全培训课件
- 疑难病例讨论制度
- 人工流产并发症
- 2025年四川省广安市中考物理试题(原卷版)
- 2025年安徽省高考化学试卷真题(含答案详解)
- 设备安装、调试、验收管理制度
评论
0/150
提交评论