如何在vite项目中配置AppLoading?
效果图:
编写loading ui
在index.html
中的<div id="app"></div>
插入写好的loading效果代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
| <div id="app"> <style> .app-loading { display: flex; width: 100%; height: 100%; justify-content: center; align-items: center; flex-direction: column; background-color: #f4f7f9; }
.app-loading .app-loading-wrap { position: absolute; top: 50%; left: 50%; display: flex; transform: translate3d(-50%, -50%, 0); justify-content: center; align-items: center; flex-direction: column; }
.app-loading .dots { display: flex; padding: 98px; justify-content: center; align-items: center; }
.app-loading .app-loading-title { display: flex; margin-top: 30px; font-size: 30px; color: rgb(0 0 0 / 85%); justify-content: center; align-items: center; }
.app-loading .app-loading-logo { display: block; width: 90px; margin: 0 auto; margin-bottom: 20px; }
.dot { position: relative; display: inline-block; width: 48px; height: 48px; margin-top: 30px; font-size: 32px; transform: rotate(45deg); box-sizing: border-box; animation: antRotate 1.2s infinite linear; }
.dot i { position: absolute; display: block; width: 20px; height: 20px; background-color: #0065cc; border-radius: 100%; opacity: 30%; transform: scale(0.75); animation: antSpinMove 1s infinite linear alternate; transform-origin: 50% 50%; }
.dot i:nth-child(1) { top: 0; left: 0; }
.dot i:nth-child(2) { top: 0; right: 0; animation-delay: 0.4s; }
.dot i:nth-child(3) { right: 0; bottom: 0; animation-delay: 0.8s; }
.dot i:nth-child(4) { bottom: 0; left: 0; animation-delay: 1.2s; } @keyframes antRotate { to { transform: rotate(405deg); } } @keyframes antRotate { to { transform: rotate(405deg); } } @keyframes antSpinMove { to { opacity: 100%; } } @keyframes antSpinMove { to { opacity: 100%; } } </style> <div class="app-loading"> <div class="app-loading-wrap"> <img src="/logo.svg" class="app-loading-logo" alt="Logo" /> <div class="app-loading-dots"> <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span> </div> <div class="app-loading-title"><%= title %></div> </div> </div> </div>
|
vite配置
在vite
中想实现ejs
动态配置,需要借助vite-plugin-html
插件
安装插件
1
| npm install vite-plugin-html -D
|
或
1
| yarn add vite-plugin-html -D
|
配置vite.config.*s
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import { minifyHtml, injectHtml } from "vite-plugin-html";
export default defineConfig({ plugins: [ vue(), minifyHtml(), injectHtml({ data: { title: "My App", }, }), ], });
|
其他
vite-plugin-html
vite