uni-app手机端启动首个页面闪白且单独修改第一个页面page颜色不生效
uni-app手机端启动首个页面闪白且单独修改第一个页面page颜色不生效
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | w10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:w10
HBuilderX类型:正式
HBuilderX版本号:3.4.7
手机系统:Android
手机系统版本号:Android 12
手机厂商:OPPO
手机机型:一加9pro
页面类型:vue
vue版本:vue2
打包方式:云端
项目创建方式:HBuilderX
示例代码:
示例代码:
start.vue 页面修改失败
<style>
page {
width: 100%;
height: 100%;
background-color: #377df6 !important;
}
</style>
app.vue 页面全局修改
<style>
/*每个页面公共css */
page{
height: 100%;
background-color: #377df6;
}
</style>
---
### 操作步骤:
#### 操作步骤:
1. 选深色图片作为manifest.json自定义启动图
2. 将进去的第一个页面背景设为深色或同色
预期结果:
预期结果:
启动页自定义蓝色图,进第一页蓝色页面
---
### 实际结果:
#### 实际结果:
启动页自定义蓝色图,进第一页蓝色页面,会闪一下白色页面
bug描述:
问题:uni-app手机端,自定义启动图,是蓝色。 启动后进去第一个页面也是蓝色会闪白一下,所以想单独修改第一个页面page的颜色,但是不生效。 在app.vue里修改page会全局生效,导致所有页面切换都会闪蓝色
在 uni-app
中,手机端启动时出现首个页面闪白的问题,通常是由于页面加载时的初始渲染导致的。以下是一些可能的解决方案:
1. 设置全局背景颜色
在 App.vue
中设置全局背景颜色,可以避免页面加载时的闪白现象。你可以在 App.vue
的 style
中添加以下代码:
<style>
/* 设置全局背景颜色 */
page {
background-color: #ffffff; /* 你可以根据需要修改颜色 */
}
</style>
2. 设置页面背景颜色
如果你只想修改某个页面的背景颜色,可以在该页面的 style
中设置 page
的背景颜色。例如:
<style>
/* 设置当前页面的背景颜色 */
page {
background-color: #f0f0f0; /* 你可以根据需要修改颜色 */
}
</style>
3. 使用 onLoad
生命周期钩子
如果你发现单独修改第一个页面的背景颜色不生效,可以尝试在 onLoad
生命周期钩子中动态设置背景颜色。例如:
<script>
export default {
onLoad() {
// 动态设置页面背景颜色
uni.setNavigationBarColor({
frontColor: '#000000', // 前景颜色
backgroundColor: '#ffffff', // 背景颜色
});
}
}
</script>
4. 使用 v-if
控制页面渲染
如果页面内容较多,导致渲染时间较长,可能会出现闪白现象。你可以使用 v-if
控制页面内容的渲染,确保在页面加载完成后再显示内容。例如:
<template>
<view v-if="isLoaded">
<!-- 页面内容 -->
</view>
</template>
<script>
export default {
data() {
return {
isLoaded: false
};
},
onLoad() {
// 模拟页面加载完成
setTimeout(() => {
this.isLoaded = true;
}, 500);
}
}
</script>
5. 使用 uni.setNavigationBarTitle
设置导航栏颜色
如果你发现导航栏的颜色影响了页面的整体效果,可以使用 uni.setNavigationBarTitle
来设置导航栏的颜色。例如:
<script>
export default {
onLoad() {
uni.setNavigationBarTitle({
title: '页面标题',
backgroundColor: '#ffffff', // 导航栏背景颜色
frontColor: '#000000' // 导航栏前景颜色
});
}
}
</script>
6. 使用 uni.setBackgroundColor
设置窗口背景颜色
你还可以使用 uni.setBackgroundColor
来设置窗口的背景颜色。例如:
<script>
export default {
onLoad() {
uni.setBackgroundColor({
backgroundColor: '#ffffff', // 窗口背景颜色
backgroundColorTop: '#ffffff', // 顶部窗口背景颜色
backgroundColorBottom: '#ffffff' // 底部窗口背景颜色
});
}
}
</script>
7. 检查 manifest.json
配置
确保 manifest.json
中的 app-plus
配置没有影响页面渲染的选项。例如:
{
"app-plus": {
"background": "#ffffff" // 设置应用启动时的背景颜色
}
}
8. 使用 uni-app
的 preload
功能
uni-app
提供了 preload
功能,可以预加载页面,减少页面加载时的闪白现象。你可以在 pages.json
中配置 preloadRule
:
{
"preloadRule": {
"pages/index/index": {
"network": "all",
"packages": ["__APP__"]
}
}
}