vue页面加载时的进度条功能(实例代码)

为了实现页面加载时的进度条功能,我们可以利用vue-router路由导航守卫的特性,监听路由跳转前后的事件,来实现页面加载状态的追踪和展示。下面是具体实现的步骤:

1.在项目中安装nprogress插件

npm install --save nprogress

2.在路由配置文件中引入nprogress

import Nprogress from 'nprogress'
import 'nprogress/nprogress.css'
  1. 在路由跳转前和跳转后分别添加nprogress的开始、结束事件
router.beforeEach((to, from, next) => {
  Nprogress.start()
  next()
})

router.afterEach(() => {
  Nprogress.done()
})
  1. 在页面模板中添加nprogress的进度条元素
<!-- App.vue -->
<template>
  <div id="app">
    <router-view />
    <Nprogress :is-show="show"/>
  </div>
</template>
  1. 在Nprogress.vue组件中实现进度条的展示和隐藏
<!-- Nprogress.vue -->
<template>
  <div class="nprogress-container" :class="{show: isShow}">
    <div class="nprogress-bar"></div>
  </div>
</template>

<script>
export default {
  props: {
    isShow: {
      type: Boolean,
      default: false
    }
  }
}
</script>

<style>
.nprogress-container {
  position: fixed;
  top: 0;
  left: 0;
  height: 2px;
  width: 100%;
  background-color: #e0e0e0;
  z-index: 9999;
  transition: opacity .2s linear;
  opacity: 0;
}
.nprogress-container.show {
  opacity: 1;
}
.nprogress-bar {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 0;
  background-color: #2196f3;
  transition: width .1s ease-out;
}
</style>

完成以上步骤,我们就成功实现了vue页面加载时的进度条功能。nprogress插件提供了多种主题和样式配置,大家可以上官网查看文档进行自定义设置。

这里再举两个示例说明一下:

示例一:引入进度条组件但不在所有路由跳转前后都显示进度条

通过watch监听$route变化,当路由跳转时动态控制进度条的显示和隐藏。

<!-- App.vue -->
<template>
  <div id="app">
    <Nprogress :is-show="show"/>
    <transition name="fade">
      <router-view />
    </transition>
  </div>
</template>

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

export default {
  components: { Nprogress },
  data() {
    return {
      show: false
    }
  },
  watch: {
    $route(to, from) {
      if (to.path === '/login' || to.path === '/register') {
        this.show = false
      } else {
        this.show = true
      }
    }
  }
}
</script>

示例二:自定义进度条组件样式

<!-- Nprogress.vue -->
<template>
  <div class="nprogress-container" :class="{show: isShow}">
    <div class="nprogress-bar" :style="{background: barColor, height: barHeight}">
      <div class="nprogress-peg"></div>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    isShow: {
      type: Boolean,
      default: false
    },
    barColor: {
      type: String,
      default: '#29d',
    },
    barHeight: {
      type: String,
      default: '2px',
    },
  }
}
</script>

<style>
.nprogress-container {
  position: fixed;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  background-color: rgba(250, 250, 250, 0.8);
  z-index: 9999;
  display: flex;
  justify-content: center;
  align-items: center;
  transition: opacity .2s linear;
  opacity: 0;
}
.nprogress-container.show {
  opacity: 1;
}
.nprogress-bar {
  position: relative;
  width: 80%;
  height: 2px;
  .nprogress-peg {
    position: absolute;
    right: 0px;
    display: block;
    width: 16px;
    height: 100%;
    border: none;
    border-radius: 100px 0px 0px 100px / 4px 0px 0px 4px;
    background-color: #fff;
    box-shadow: 0 0 10px 1px #29d, 0 0 5px 0 #29d;
    transform: rotate(3deg) translate(0px, -4px);
  }
}
</style>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue页面加载时的进度条功能(实例代码) - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • uni-app使用微信小程序云函数的步骤示例

    下面是uni-app使用微信小程序云函数的步骤示例的完整攻略: 1. 简介 uni-app是一款使用vue语法开发的跨平台开发框架,它能够一次编写多端代码(H5、小程序、App等),具有开发效率高、性能好、维护方便等优点。微信小程序云开发则是在微信小程序中提供了一个方便快捷的开发平台,其中之一就是云函数,它可以将服务器上的计算资源和代码在云端进行执行并返回结…

    Vue 2023年5月28日
    00
  • vue-resource 获取本地json数据404问题的解决

    Vue-resource 是Vue.js官方提供的一个数据请求插件,可以方便地进行数据的请求和响应。在使用vue-resource时,经常会遇到获取本地json数据时出现404错误的问题,接下来我将详细讲解如何解决该问题。 问题描述 使用vue-resource请求本地json数据时,页面在访问数据时会报404错误,无法正常获取数据。 解决方案 步骤一:使用…

    Vue 2023年5月27日
    00
  • Vue+Canvas绘图使用的讲解

    下面是Vue+Canvas绘图的攻略: 1. 准备工作 在Vue项目中引入canvas,你可以在main.js文件中引入VueKonva插件,该插件使得Canvas的使用更简单,也方便了对canvas的管理,引入方式如下: import Vue from ‘vue’ import VueKonva from ‘vue-konva’ Vue.use(VueKo…

    Vue 2023年5月28日
    00
  • vue面包屑组件的封装方法

    下面是关于“Vue面包屑组件的封装方法”的完整攻略: 一、Vue面包屑组件的功能 Vue面包屑组件是一种展示“面包屑导航”的组件,可以使用户快速了解当前自己所在的路径,便于用户在网站中进行页面跳转。 这种组件的基本功能包括: 显示当前页面所在的路径(由多个层级组成) 根据路径提供页面跳转的链接 二、Vue面包屑组件的封装 在Vue中封装一个面包屑组件,可以采…

    Vue 2023年5月27日
    00
  • vue2.0实现音乐/视频播放进度条组件

    关于“vue2.0实现音乐/视频播放进度条组件”的攻略,我们需要考虑到以下几个方面: 组件设计 组件实现 组件使用 组件设计 在设计组件时,我们需要考虑以下几个方面: 组件的功能需求:播放进度条组件需要提供能够显示当前播放进度和总时长的功能,以及能够拖动改变播放进度的功能。 状态管理:我们需要维护当前播放时间、总时长和拖动状态的状态。 组件结构:播放进度条组…

    Vue 2023年5月29日
    00
  • vue实现图书管理系统

    Vue实现图书管理系统的完整攻略 1. 项目搭建 安装 Vue CLI 脚手架工具 npm install -g @vue/cli 创建 Vue 项目 vue create book-manager 安装项目所需的依赖 cd book-manager npm install axios bootstrap-vue vue-router vuex –save…

    Vue 2023年5月28日
    00
  • vue关于重置表单数据出现undefined的解决

    关于重置表单数据出现undefined的问题,我们可以进行如下的解决方式: 问题原因 首先,我们需要明确这个问题的原因。在 Vue 中,我们重置表单数据通常使用 Object.assign 或者展开操作符 … 来将一个空对象里的数据覆盖当前表单组件里的数据。常见代码如下: // resetFormData 方法里重置formData数据 resetFor…

    Vue 2023年5月27日
    00
  • vsCode中vue文件无法提示html标签的操作方法

    针对vsCode中vue文件无法提示html标签的情况,可以按照以下步骤进行操作: 安装Vetur插件 Vetur是一款vsCode的插件,主要提供语法高亮、格式化、代码片段和错误提示等功能,适用于Vue.js开发。因此,在使用vsCode编辑Vue文件时,我们需要安装并启用Vetur插件,这样就能够解决无法提示html标签的问题。 具体操作如下: 在vsC…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部