uni-app手机端启动首个页面闪白且单独修改第一个页面page颜色不生效

发布于 1周前 作者 bupafengyu 来自 Uni-App

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会全局生效,导致所有页面切换都会闪蓝色


1 回复

uni-app 中,手机端启动时出现首个页面闪白的问题,通常是由于页面加载时的初始渲染导致的。以下是一些可能的解决方案:

1. 设置全局背景颜色

App.vue 中设置全局背景颜色,可以避免页面加载时的闪白现象。你可以在 App.vuestyle 中添加以下代码:

<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-apppreload 功能

uni-app 提供了 preload 功能,可以预加载页面,减少页面加载时的闪白现象。你可以在 pages.json 中配置 preloadRule

{
  "preloadRule": {
    "pages/index/index": {
      "network": "all",
      "packages": ["__APP__"]
    }
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!