使用vue实现加载页

本文实例为大家分享了用vue实现加载页的具体代码,供大家参考,具体内容如下

<template>
    <div class="bac" style="height:1024px;display: flex;align-items: center;justify-content: center;">
        <div class="wrap-content">
            <img class="logo" src="../../assets/img/logo.png" :style="{'margin-left':percent}">
            <div class="bar">
                <div :style="{width:percent}" class="loadingBar">

                </div>
            </div>
            <div class="percentFont">{{percent}}</div>
            <div class="fontTitle">报告生成中...</div>
        </div>
    </div>
</template>

<script>
    export default {
        name: "loading",
        data() {
            return{
                count: 0,
                percent:'0',
                imgs:[
                    require("@/assets/img/bg.png"),
                    require("@/assets/img/icon1.png"),
                    require('@/assets/img/icon2.png'),
                    require('@/assets/img/icon3.png'),
                    require('@/assets/img/icon4.png'),
                    require('@/assets/img/icon5.png'),
                    require('@/assets/img/icon6.png'),
                    require('@/assets/img/loading-bg.png'),
                    require('@/assets/img/logo.png'),
                    require('@/assets/img/page3-title.png'),
                    require('@/assets/img/pic1.png'),
                    require('@/assets/img/pic2.png'),
                    require('@/assets/img/pic3.png')
                 )
                ]
            }
        },
        mounted() {
            this.preload();
        },
        watch:{
            count: function (val) {

                if ( val === this.imgs.length) {
                    // 图片加载完成后跳转页面
                    console.log(" 准备就绪 >>>", val)
                    this.$router.push({path: 'index'})
                }
            }
        },
        methods:{
            preload:function () {
                for (let img of this.imgs) {
                    let image = new Image()
                    image.src = img
                    image.onload = () => {
                        this.count++
                        // 计算图片加载的百分数,绑定到percent变量
                        let percentNum = Math.floor(this.count / this.imgs.length * 100)
                        if (percentNum == 100) {
                            percentNum = 99
                        }
                        this.percent = `${percentNum}%`
                    }

                }
            }
        }
    }
</script>

<style scoped>
    .bac {
        width: 100%;
        background: url("../../assets/img/loading-bg.png") no-repeat top right;
        background-size: 100% 100%;
        overflow: hidden;
        position: relative;
    }
    .logo{
        width: 98px;
        height: 98px;
    }
    .percentFont {
        font-size: 32px;
        color: #046353;
        letter-spacing: 0.84px;
        text-align: center;
        margin-top: 32px;
    }

    .bar {
        margin-top: 50px;
        width: 300px;
        height: 8px;
        opacity: 0.8;
        background: #FFFFFF;
        border-radius: 4px;
    }

    .loadingBar {
        height: 8px;
        background-image: linear-gradient(-47deg, #046353 0%, #046353 100%);
        border-radius: 4px;
    }

    .fontTitle {
        margin-top: 12px;
        font-size: 32px;
        color: #046353;
        letter-spacing: 0.84px;
        text-align: center;
        font-weight: 400;
    }
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • vue实现加载页面自动触发函数(及异步获取数据)

    目录 加载页面自动触发函数 实例 页面加载时,触发某个函数的方法 解决方法如下 加载页面自动触发函数 实例 methods:{ onCreate:async function() { const router = useRouter() const route = useRoute() const { id = '', f = 1 } = route.query console.log("======="+id) const res = await reqGetOrderNumByCl

  • 浅谈Vue.js 关于页面加载完成后执行一个方法的问题

    首先我们会想着在mounted或者created里面加入想要执行的方法,但是有的时候会遇到在你执行这个方法的时候,页面还并没有被渲染完成,所以就会出现这个方法在匹配页面标签报错的情况. 解决思路: 1.通过子页面调用父页面的方法,因为在子页面开始渲染的时候,你的父页面肯定是已经渲染好了的,前提这里的方法中是去找寻父页面的标签. 2.直接在本页面监视一个参数,发现参数被初始化了,说明页面也已经加载完成,因为你的页面用到了这个参数. 方法1案例:tab页里的子页面如果没有内容就隐藏 父页面代码 <e

  • vue实现页面加载动画效果

    我们经常看到数据未出现时,页面中会有一条提示消息, 页面正在加载中,如何实现该效果呢 ,请看下面代码 <template> <section class="page" v-if="option" :style="{background: option.background,color: option.color||'#fff'}" :class="{'page-before': option.index < cu

  • 详解vue页面首次加载缓慢原因及解决方案

    第一次打包vue的项目部署到服务器下时,发现初次加载特别的缓慢,将近20s页面才加载出来,完全没有开发环境上的那么流畅.主要原因是页面在打包后如果不进行相关配置会导致资源文件特别的大,一次想要全部加载完成会特别的耗时.这里简单总结一下自己用到的一些优化的方案. 首先我们可以安装webpack-bundle-analyzer 插件,通过这个插件我们可以在打包的时候看到打包文件的大小,可以明显的看出哪些文件比较大. 解决方案一 1,去掉编译文件中map文件.在编译好后,我们会看到文件夹下有特别多的.

  • 详解Vue.js在页面加载时执行某个方法

    jQuery中可以这样写 vue中,如果要达到相同效果,可以使用vue的生命周期函数,如create或者mounted 附上vue.js的生命周期函数执行流程 总结 以上所述是小编给大家介绍的Vue.js在页面加载时执行某个方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对我们网站的支持!

  • 使用Vue实现调用接口加载页面初始数据

    闲着没事写了一个电影推荐的网页,很简单,使用的是Vue的实现. let vm = new Vue({ el:'#content', data:{ name:'', pic:'', actor:'', detail:'', link:'' }, mounted:function () { this.getMovie(); }, methods:{ getMovie:function () { var _this = this; let url = '/niuren/getRecommendFilm

  • vue.js页面加载执行created,mounted的先后顺序说明

    created页面加载未渲染html之前执行. mounted渲染html后再执行. 由于created在html模板生产之前所以无法对Dom进行操作而mounted可以. 补充知识:关于Vue子组件data选项某个属性引用子组件props定义的属性的几点思考 学过Vue的都知道Vue等MVVM框架相对于传统的JS库比如Jquery最大的区别在于数据驱动视图,重点在于数据,拿到数据后将数据通过模板{{}}语法或者v-html展示在页面上. 我们也都知道在Vue父子组件可以通过Props实现父组件

  • 解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题

    在项目中遇到后台数据还没有加载完毕,但是页面上调用了后台数据中的字段,这样就会报undefined. 例如:一进入页面直接回显数据. 我在created里面请求接口进行赋值 this.matterAll=[]; 会报accessItemName为undefined: 原因以及解决办法: 在上面data()中,我定义了matterAll:[],也就是空的数组, template中,我又直接用了this.matterAll[0],这个时候this.matterAll[0]=undefined,所以t

  • Vue 路由切换时页面内容没有重新加载的解决方法

    第二次进入页面,页面路由参数已经改变,但是页面内容不会刷新. 问题原因:在组件mounted钩子中调用的刷新页面内容,但测试发现这个钩子没有被调用.后来发现App.vue中使用了<keep-alive>: <template> <div id="app"> <keep-alive> <router-view></router-view> </keep-alive> </div> </t

  • VUE页面中加载外部HTML的示例代码

    前后端分离,后端提供了接口.但有一部分数据,比较产品说明文件,是存在其他的服务器上的. 所以,在页面显示的时候,如果以页面内嵌的形式显示这个说明文件.需要搞点事情以达到想要的效果. 不同以往的IFRAME标签,那种方式比较Low,另外有其他的一些BUG. 本文思路是把HTML请求以来,以v-html的形式加载到页面内部.注册全局组件[v-html-panel] 1.HtmlPanel.vue文件 <template> <div> <mu-circular-progress :

随机推荐