返回

在Uni-App中根除页面闪白,你的闪屏方案在这里!

前端

深入剖析Uni-App闪屏的根源

在探讨Uni-App闪屏的解决之道前,我们必须先了解导致闪屏的根源。简而言之,Uni-App在页面切换时,系统会先加载APP.vue中的全局样式,再加载新页面的样式。如果新页面与全局样式有差异,就会出现短暂的闪白。

绝招一:巧用loading组件,轻松化解闪屏

解决Uni-App闪屏问题,第一步就是要消除闪屏的根源。然而,直接修改APP.vue中的全局样式可能会对整个应用造成影响,得不偿失。这时,我们可以借助loading组件来巧妙化解闪屏。

在需要加载新页面的页面中,我们可以添加一个loading组件。当新页面加载完成时,再隐藏loading组件。这样,当用户切换页面时,就不会看到闪白了。

loading组件的具体实现方式如下:

<template>
  <div class="loading">
    <div class="loading-icon"></div>
    <div class="loading-text">正在加载...</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isLoading: true
    }
  },
  methods: {
    hideLoading() {
      this.isLoading = false
    }
  }
}
</script>

<style>
.loading {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #ffffff;
  z-index: 9999;
}

.loading-icon {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 50px;
  height: 50px;
  border: 5px solid #000000;
  border-radius: 50%;
  animation: loading 1s linear infinite;
}

.loading-text {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 16px;
  color: #000000;
}

@keyframes loading {
  0% {
    transform: translate(-50%, -50%) rotate(0deg);
  }
  100% {
    transform: translate(-50%, -50%) rotate(360deg);
  }
}
</style>

然后,在需要加载新页面的页面中,使用如下代码加载loading组件:

<template>
  <div>
    <loading v-if="isLoading"></loading>
    <router-view></router-view>
  </div>
</template>

<script>
import Loading from '@/components/Loading.vue'

export default {
  data() {
    return {
      isLoading: true
    }
  },
  components: {
    Loading
  },
  created() {
    setTimeout(() => {
      this.isLoading = false
    }, 1000)
  }
}
</script>

绝招二:合理设置页面背景色,一劳永逸告别闪屏

在某些情况下,我们可以通过合理设置页面背景色来一劳永逸地告别闪屏。

如果您的APP是深色背景,那么可以在APP.vue中的全局样式中将背景色设置为深色。这样,当切换页面时,就不会出现闪白了。

/* APP.vue */
body {
  background-color: #000000;
}

如果您的APP是浅色背景,那么可以在page.json文件中将背景色设置为浅色。

/* page.json */
{
  "pages": [
    {
      "path": "pages/index/index",
      "style": {
        "background": "#ffffff"
      }
    }
  ]
}

绝招三:合理利用page.json的style字段,巧妙解决闪屏

在某些情况下,我们可以通过合理利用page.json的style字段来巧妙解决闪屏。

/* page.json */
{
  "pages": [
    {
      "path": "pages/index/index",
      "style": {
        "backgroundColor": "#ffffff",
        "transition": "background-color 0.3s ease-in-out"
      }
    }
  ]
}

在page.json文件中,我们可以为每个页面设置style字段。style字段是一个JSON对象,可以设置页面的样式。

在style字段中,我们可以设置backgroundColor属性来设置页面的背景色。

此外,我们还可以设置transition属性来设置页面的过渡动画。在transition属性中,我们可以设置background-color属性来设置页面的背景色过渡动画。

通过合理利用page.json的style字段,我们可以巧妙解决闪屏问题。

总结

在本文中,我们介绍了三种解决Uni-App闪屏问题的方案。这三种方案各有优劣,开发者可以根据自己的实际情况选择合适的方案。

希望本文能够帮助您解决Uni-App闪屏的问题,让您的APP更加流畅和美观。