首页/文章/uniapp

还在为uniapp的app端tabbar页面闪烁闪白而发愁吗

2024-12-13
6223 分钟
...

概要

本文主要为uniapp的app端tabbar页面在切换另一个未缓存的tabbar页面时会发生闪白闪烁。这个根本原因是app端可以理解为多页面,你不去点击下一个tabbar页面,是不会去渲染的。但是渲染又要时间,就会存留这一瞬间的渲染间隙。

有人问:不是有预加载吗,把tabbar页面全都预加载一遍不就行了吗; 或者说tabbar页面不是有缓存吗,我直接开局先把所有tabbar页面加载一遍不就欧了。

但是我相信看到这篇文章的小伙伴们也正是因为此番操作无果,或者各种报错,不能连续跳转页面啊,又或是全部加载一遍的话启动太慢了等等,才来尝试本文章提供的思路的。

思路

给根节点(也就是html节点)上底色。 一句话,很简单,但是也很难。如果是纯暗色系app,那你直接写死一个合适的暗色底色就行了。 不过如果你的app是可以黑白切换的,如果你写死黑色底色,那么白主题就是闪黑了。

有人问:那我想办法给html动态设置底色不就行了。

想法很好,但是你自己慢慢试错得踩遍坑,因为你给底色设成css或者sass变量也好,还是什么其他的也罢,你会发现永远都会慢一步,慢这渲染html根节点的一步,导致还是闪烁。这里我就直接上方案了

方案

  1. 通过媒体查询,给暗夜模式上底色
<style>


@media (prefers-color-scheme: dark) {
  html {
    background: #141414; 
  }
}
</style>
  1. 切换dark还是light 跟随你的主题变量设置 prefers-color-scheme
computed: {
  theme() {
    return useSysStore().getTheme()
  }
},



watch: {
  
  
  
  theme(newVal) {
    plus.nativeUI.setUIStyle(newVal)
  }
},

本方案是无需在manifest.json中设置darkmode的,也不需要写个theme.json去使用darkmode的写法,就正常使用css或者scss变量去处理主题配色。

该思路我只在我自己的安卓机子上实测了也成功了,我不能保证所有机型都适配,而且我木有苹果手机,自然也测不了ios设备

题外话

既然都做完自定义的主题切换了,怎么在根节点添加类或者自定义属性用作主题标识(使用renderjs或者wxs)的方法应该不用在此文章讲解说明了。该文章也仅提供如此一思路去实现使用媒体查询的形式动态给根节点上底色而已。全网我搜罗很久都没见到有这种思路的分享,如若转载请注明我原文章原作者。 希望本文能帮你节省很多时间,网上的文章抄来抄去的太多了。如果本文没能帮到你也请直接略过

效果预览

移步至原文档

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
uniapp2025-07-15
uniapp页面跳转传参
1\. uni .navigateTo 传: 接: 2\. navigator 传: 接:
学习
uniapp2025-07-09
uni-app中的#ifdef #ifndef #endif的用处
| #ifdef | 仅在某个平台上使用 | | #ifndef | 在除了这个平台的其他平台上使用(非此平台使用) | | #endif | 结束条件编译 | 2. 标识的意思 | 标识 | 平台 | | | | | APP PLUS | 5+App | | MP | 微信小程序/支付宝小程序/百度小程序/头条小程序/QQ小程序 | | MP WEIXIN | 微信小程序 | | MP ALIPAY | 支付宝小程序 | | MP B...
学习
uniapp2025-07-05
记录uniapp键盘弹出页面上移
我们每次在做UNIAPP小程序和H5遇到输入框时,总会在测试的时候点击输入框弹出软键盘把页面往上移动,仔细翻读uniapp文档的时候发现了一个属性adjust position :Boolean类型,作用是键盘弹起时,是否自动上推页面 1.发现将adjust position属性设置为false。就可以了。前提是vue 页面 softinputMode不能是为 adjustResize 2.这个softinputMode属性在page....
学习
uniapp2024-09-20
uniapp微信开发合集,登录-支付-订阅消息
背景 uniapp很多小程序组件库、功能丰富,可以帮我们快速做开发。但是呢,这些组件库,缺了点儿跟微信业务直接相关的、比如怎么在微信里收钱、怎么让用户登录,还有怎么发订阅消息给他们。这些业务功能,组件库里都没有现成的。 所以啊,我自己动手,开发了一套微信业务组件合集,起了名字叫【uboxui】,专门解决这些问题。这样大家在做微信小程序的时候,就能更方便、更快捷地搞定这些业务上的事儿了。 功能合集 以下内容重点讲解实现思路,完整代码文末下...
学习
uniapp2024-09-19
uniapp vue3 微信小程序展示markdown
一、zero markdown view 首先是去dcolud插件市场逛 了一圈,发现兼容vue3并且下载数比较高的是这款,zero markdown view, 插件用起来比较方便,符合 组件模式, 导入 后直接使用即可。 参数支持自定义代码背景色(不建议修改)、以及主题色。 测试效果如下: 个人觉得主段落内容字号太大,行距太大,看起来不是很美观。 二、微信小程序原生插件tom 1、安装 第一步:下载源文件,那么可以git clone...
学习
uniapp2024-09-18
uni-app小程序超过2M怎么办
开发版可以调整上限为4M 开发者工具 详情 本地设置 预览及真机调试时主包、分包体积上限调整为4M 勾选 上传代码时,主包必须在2M以内。 小程序tabbar页面必须放在主包。 推荐除了tabbar页面以外,其余的都放在分包。其实只要这样做了,再复杂的小程序,主包代码都很难超过2M,但如果是 uni app 开发的,那就不一定了。 开发环境压缩代码 使用cli创建的项目 在 , 中设置压缩:在命令中加入 使用hbuilderx创建的项目...
学习

评论

请登录后发表评论

去登录
加载评论中...

目录