iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JS实现页面滚动到关闭时的位置与不滚动效果
  • 712
分享到

JS实现页面滚动到关闭时的位置与不滚动效果

2024-04-02 19:04:59 712人浏览 泡泡鱼
摘要

目录滚动不滚动标题显而易见,要说两种情况:重新打开页面或者返回某个页面时滚动到上次离开时的位置,以及不滚动保持在顶部。 滚动 这也有两种情况:页面重新打开,与返回某个页面。如果是前者

标题显而易见,要说两种情况:重新打开页面或者返回某个页面时滚动到上次离开时的位置,以及不滚动保持在顶部。

滚动

这也有两种情况:页面重新打开,与返回某个页面。
如果是前者,必定用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");
    const scrollTop = $content ? $content.scrollTop : 0;
    from.meta.scrollTop = scrollTop;
  }
  next();
});

然后在回到当前页面时拿到临时缓存,并赋值

// utils/index.js
export const getScroll = vm => {
  const scrollTop = vm.$route.meta.scrollTop;
  const $content = document.querySelector('#app');
  if (scrollTop && $content) {
    $content.scrollTop = scrollTop;
  }
};

组件内

import * as util from '@/utils/';
//...
activeted() {
  // 保持滚动条
  util.getScroll(this);

}

其二,利用keep-alive缓存整个页面。但是仅限于没有实时数据变动的页面

<template>
  <div id="app">
    <keep-alive >
        <router-view v-if="$route.meta.keepAlive"></router-view>
    </keep-alive>
    <router-view v-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外基本目前使用的浏览器都可以使用了。

if (history.scrollRestoration) {
    history.scrollRestoration = 'manual';
}

强制刷新(CTRL + F5)不会“记住”用户位置

到此这篇关于JS实现页面滚动到关闭时的位置与不滚动效果的文章就介绍到这了,更多相关js页面滚动内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JS实现页面滚动到关闭时的位置与不滚动效果

本文链接: https://www.lsjlt.com/news/150512.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JS实现页面滚动到关闭时的位置与不滚动效果
    目录滚动不滚动标题显而易见,要说两种情况:重新打开页面或者返回某个页面时滚动到上次离开时的位置,以及不滚动保持在顶部。 滚动 这也有两种情况:页面重新打开,与返回某个页面。如果是前者...
    99+
    2024-04-02
  • JS如何实现页面滚动到关闭时的位置与不滚动效果
    这篇文章主要讲解了“JS如何实现页面滚动到关闭时的位置与不滚动效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS如何实现页面滚动到关闭时的位置与不滚动效果”吧!标题显而易见,要说两种情况...
    99+
    2023-06-30
  • 微信小程序实现页面滚动到指定位置效果
    微信小程序实现页面滚动到指定位置效果,需要具体代码示例小程序是近年来非常受欢迎的一种移动应用开发方式,它的简洁和高性能使其成为了许多开发者的首选。在小程序中,常常会遇到需要在页面中实现滚动到指定位置的效果,本文将介绍如何在小程序中实现这一功...
    99+
    2023-11-21
    页面滚动 微信小程序 指定位置效果
  • js实现控制整个页面滚动条的位置
    目录js控制整个页面滚动条位置方法一方法二js滚动条属性、设置滚动条滚动速度设置滚动条速度代码示例js控制整个页面滚动条位置 方法一 1、通过div的scrollTop变动控制垂直滚...
    99+
    2022-11-13
    js滚动条 滚动条位置 js控制滚动条位置
  • JavaScript实现页面无缝滚动效果
    本文实例为大家分享了JavaScript实现页面无缝滚动效果的具体代码,供大家参考,具体内容如下 目前我只使用两种方式,如果还有其他方式,希望推荐一下。 1、js+transform...
    99+
    2024-04-02
  • velocity.js实现页面滚动切换效果
    今天介绍一个Javascript的小型的动画插件velocity.js,可以方便高效的开发一个具有多页面滚动切换效果的网站。 浏览器支持 velocity.js支持IE8+、Chro...
    99+
    2024-04-02
  • javascript实现全屏页面滚动效果
    在我读完javaScript DOM之后,对解释型的javaScript脚本语言有了更加深刻的感悟和理解,并使我的javaScript代码更加规范化。 接下来,我们转入今天我要分享的...
    99+
    2024-04-02
  • js实现文字滚动的效果
    本文实例为大家分享了js实现文字滚动的效果的具体代码,供大家参考,具体内容如下 在之前小编已经和大家介绍了一些常用的js动画效果,在此,和大家介绍一种可能不太常用的动画效果。该动画效...
    99+
    2024-04-02
  • Vue滚动页面到指定位置的实现及避坑
    目录Vue滚动页面到指定位置方法1方法2方法3避坑指南滚动页面到一定距离后固定Vue滚动页面到指定位置 在Vue中,有三种方式可以实现H5页面滑动至指定位置 方法1 //先获取目标位...
    99+
    2024-04-02
  • Android Flutter实现有趣的页面滚动效果
    目录CustomScrollView 简介改造原代码让导航栏更有趣改造后的代码其他效果总结在Flutter 高仿一个某支付价值几个亿的页面这一篇中,我们使用了 ListVi...
    99+
    2024-04-02
  • JavaScript怎么实现页面无缝滚动效果
    这篇文章主要介绍“JavaScript怎么实现页面无缝滚动效果”,在日常操作中,相信很多人在JavaScript怎么实现页面无缝滚动效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript怎么实...
    99+
    2023-06-29
  • jquery如何实现页面滚动而元素位置不变
    本篇内容介绍了“jquery如何实现页面滚动而元素位置不变”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!两...
    99+
    2024-04-02
  • js如何实现文字滚动的效果
    这篇文章主要介绍“js如何实现文字滚动的效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“js如何实现文字滚动的效果”文章能帮助大家解决问题。1、取值:(1)writing-mode:horizon...
    99+
    2023-07-02
  • vue如何实现返回上一页面时回到原先滚动的位置
    这篇文章主要为大家展示了“vue如何实现返回上一页面时回到原先滚动的位置”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue如何实现返回上一页面时回到原先滚动的...
    99+
    2024-04-02
  • Android用viewPager2实现UI界面翻页滚动的效果
    目录1.先在build.gradle(Module)下添加引用viewPager2的库2.在MainActivity下新建一个viewPager23.创建个ViewPagerAdap...
    99+
    2024-04-02
  • Android Flutter如何实现有趣的页面滚动效果
    本文小编为大家详细介绍“Android Flutter如何实现有趣的页面滚动效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android Flutter如何实现有趣的页面滚动效果”文章能帮助大家解决疑惑,下面跟着小...
    99+
    2023-07-02
  • 小程序中如何实现将页面滚动到目标位置
    本文将为大家详细介绍“小程序中如何实现将页面滚动到目标位置”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“小程序中如何实现将页面滚动到目标位置”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下...
    99+
    2023-06-26
  • Vue.js实现页面后退时还原滚动位置的操作方法
    目录开始目录结构安装模块route规则code社区api为例子总结前言 从Vue.js 2.x发布之后,陆陆续续做了七八个项目,摸索出来了一套自己的状态管理模式,我将之称为Vuet。...
    99+
    2024-04-02
  • 微信小程序实现页面滚动监听效果
    抱歉,我无法提供具体代码示例。如果你想了解如何在微信小程序中实现页面滚动监听效果,可以通过以下步骤自己尝试:创建一个新的微信小程序项目。在 wxml 文件中编写页面结构,包括需要滚动监听的元素。在 wxss 文件中设置页面样式,包括滚动监听...
    99+
    2023-11-21
    页面滚动 微信小程序 监听效果
  • 原生js如果实现类似fullpage的单页/全屏滚动效果
    小编给大家分享一下原生js如果实现类似fullpage的单页/全屏滚动效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言单页...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作