首页 > 其他分享 >uniapp开发——h5版本页面切换无法重置页面滚动状态的处理方案

uniapp开发——h5版本页面切换无法重置页面滚动状态的处理方案

时间:2024-01-18 10:44:44浏览次数:34  
标签:uniapp vue 滚动 h5 uni router 页面

前言:

使用vue开发h5的时候,都会使用vue-router的scrollBehavior函数处理页面滚动状态,代码如下:

const router = new VueRouter({
  mode: "hash",
  routes,
  scrollBehavior(to, from, savePosition) {
    if (savePosition && to.meta.keepAlive) {
      return savePosition;
    }
    return {
      x: 0,
      y: 0
    }
  }
});

但是uniapp有自己的路由,且不支持vue-router,纵使有不少诸如uni app 路由库 uni-simple-router | uni-simple-router (hhyang.cn)之类的插件,但使用起来也是比较麻烦的,而且有些高级功能还要收费,所以,非必须就不建议使用了。

对于已经滚动了的页面切换到下一个页面保留了一定的滚动,这个问题直接使用uni.pageScrollTo()就可以了,可以封装成公共函数,需要使用到的页面直接引用,代码如下:

public.js

//h5页面初始化,页面切换默认不会重置滚动状态,需要在OnReady生命周期中处理
function initPageScroll() {
  uni.pageScrollTo({
    scrollTop: 0,
    duration: 0
  });
}
export {
  initPageScroll
}

demo.vue

onReady() {
    $my.initPageScroll();
}

注意,一定要在onReady生命周期中调用,如果在onLoad中调用,则会出现滚动到顶部的过渡效果,即使把uni.pageScrollTo()的duration设置为0也没用。

标签:uniapp,vue,滚动,h5,uni,router,页面
From: https://www.cnblogs.com/xyyt/p/17972004

相关文章

  • Python 运行时抛出了一个异常请检查疑难解答页面 stable diffusion
    Python运行时抛出异常解决方法简介在Python开发过程中,我们经常会遇到各种异常情况。当Python运行时抛出一个异常时,我们需要检查疑难解答页面来找到解决方法。本文将向你介绍如何处理这种异常情况,并提供一套具体的步骤和代码示例。解决异常的步骤下面是解决Python运行时......
  • 页面交互逻辑比较
    写这篇是为了记录下:能达到相同效果的两种不同的页面交互逻辑。场景侧边栏菜单分为两部分,一部分是固定,一部分是动态。如下图所示:不同的项目,动态菜单的数量和内容不一样。处于项目A时,若处于动态菜单页面(比如Piping),点击顶部下拉框切换到项目B),那么:之前打开的项目A的Pipin......
  • uniApp篇
    uniApp篇:https://mp.weixin.qq.com/s?__biz=MzUzMTMxODY3OQ==&mid=2247489087&idx=1&sn=6e8da1aaa7461f0eaf70dd6668106304&chksm=fa4504c7cd328dd163a36bb1ba625d96e9f853f650033267741817347836a939fa8f5ba3c33b&mpshare=1&scene=23&srcid=0115......
  • harmonyos 02 app创建,页面跳转
        HDF             添加button导入 router  返回按钮   指定返回的页面      ......
  • VUE框架实现符合Vue3语法格式的页面与各个配置项解析------VUE框架
    <template><HelloWorld></HelloWorld><h1>{{name}}</h1><h1>{{age}}</h1><h1>{{a}}</h1><h1>{{b}}</h1><button@click="sayHello">按一下</butto......
  • HarmonyOS4.0系列——01、下载、安装、配置环境、搭建页面以及运行示例代码
    HarmonyOS4.0应用开发安装编辑器这里安装windows版本为例安装依赖打开DevEcoStudio这八项全部打钩即可开始编写代码,如果存在x,需要安装正确的库即可开发点击CreateProject选择默认模板——nextModel部分分为Stage和FA两个应用模型,FA是支持7版本以内的模型支持JS和TS,而Stage支持最......
  • asp.net 页面的事件执行顺序(全)
    原文链接:https://www.cnblogs.com/ishibin/archive/2012/08/14/2638054.html默认的aspx页面都是继承自System.Web.UI.Page,Page基类定义了很多需要预执行的事件,这些事件虽没有在aspx页面中显示的定义或提及,但它们仍然会以一定的顺序去执行,这些事件的执行顺序是:1.OnPreInit 2.......
  • js自动缩放页面自适应屏幕分辨率
    1.简单版:s=window.screen.width/1920;document.body.style.zoom=s;2. 当开发前端页面在分辨率1920的情况下,需要切换到小屏,有种方法是可以对屏幕比例进行缩放,通过css3属性transform可以自适应屏幕分辨率大小vars;functionresize(){s=window.screen.width......
  • vue入门页面,搭建localhost官方默认页面
    按照提示操作可以做出下图效果:idea中的vue目录层级为:1.下载node.js(nodes.js是前端的运行环境,类似于后端中的jdk,没有node.js后续操作无法进行,具体流程百度)2.新建文件夹(这个文件夹就是你之后vue的目录)点进去新建的文件夹3.输入cmd回车4.输入命令:npmconfigsetreistryht......
  • Layui官网—面板 - 页面元素
    一般的面板通常是指一个独立的容器,而折叠面板则能有效地节省页面的可视面积,非常适合应用于:QA说明、帮助文档等常规面板<divclass="layui-card"><divclass="layui-card-header">卡片面板</div><divclass="layui-card-body">卡片式面板面板通常用于非白色背景色的主体......