vue手寫加載動(dòng)畫項(xiàng)目
在頁面沒有響應(yīng)時(shí),展示加載動(dòng)畫是一種對(duì)用戶友好的表現(xiàn),不至于白屏,等響應(yīng)內(nèi)容渲染到頁面時(shí)再移除動(dòng)畫
先放loading效果圖

原理:偽類+動(dòng)畫,下面是步驟圖,貼上助于理解,加載動(dòng)畫本質(zhì)是設(shè)置一個(gè)定寬定高的正方形,border-radius: 50%;使其成為圓形,再給該div3px的邊框并設(shè)為透明,然后在單獨(dú)設(shè)置上邊框?yàn)榘咨?,?:before,::after偽類absolute定位并進(jìn)行同樣設(shè)置,不同之處是依次增大留出的間隙,以及動(dòng)畫執(zhí)行時(shí)間變長(zhǎng)和設(shè)置延遲,這樣就能形成圓圈不同快慢的旋轉(zhuǎn)


完整代碼:
components文件夾下loading.vue
<template>
<div id="loader_wrapper">
<div id="loader"></div>
<div class="load_title">正在加載,請(qǐng)稍等......</div>
</div>
</template>
<script>
export default{
name:"loading",
}
</script>
<style scoped>
#loader_wrapper{
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 99;
background: rgba(0, 0, 0,.8);
background-size: 100% 100%;
}
#loader{
display: block;
position: relative;
left: 50%;
top: 50%;
width: 300px;
height: 300px;
/* background: red; */
margin: -150px 0 0 -150px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #fff;
-webkit-animation: spin 5s linear infinite;
-ms-animation: spin 5s linear infinite;
-moz-animation: spin 5s linear infinite;
-o-animation : spin 5s linear infinite;
animation:spin 5s linear infinite;
z-index: 1001;
}
#loader:before{
content:"";
position: absolute;
top: 5px;
left: 5px;
right: 5px;
bottom: 5px;
border-radius: 50%;
/* background: green; */
border: 3px solid transparent;
border-top-color: #fff;
-webkit-animation: spin 8s linear infinite;
-ms-animation: spin 8s linear infinite;
-moz-animation: spin 8s linear infinite;
-o-animation : spin 8s linear infinite;
animation:spin 8s linear infinite;
}
#loader:after{
content:"";
position: absolute;
top: 15px;
left: 15px;
right: 15px;
bottom: 15px;
border-radius: 50%;
/* background: yellow; */
border: 3px solid transparent;
border-top-color: #fff;
-webkit-animation: spin 8s linear 1s infinite;
-ms-animation: spin 8s linear 1s infinite;
-moz-animation: spin 8s linear 1s infinite;
-o-animation : spin 8s linear 1s infinite;
animation:spin 8s linear 1s infinite;
}
@-webkit-keyframes spin {
0%{
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform:rotate(0deg);
}
100%{
-webkit-transform: rotate(360deg);
-ms-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes spin{
0%{
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform:rotate(0deg);
}
100%{
-webkit-transform: rotate(360deg);
-ms-transform: rotate(360deg);
transform: rotate(360deg);
}
}
#loader_wrapper .load_title{
font-family: "Open Sans";
color:#fff;
font-size: .3rem;
width: 100%;
text-align: center;
z-index: 9999;
position: absolute;
top: 70%;
opacity: 1;
line-height: .3rem;
}
</style>
在cs.vue頁面中引入并注冊(cè)loading
cs.vue
<template>
<div class="main">
<loading v-if="!initFlag"></loading>
111
</div>
</template>
<script>
import loading from "../components/loading"
export default {
name:"tranin",
data () {
return{
initFlag:false,//初始化全局?jǐn)?shù)據(jù)的請(qǐng)求 false表示請(qǐng)求失敗
}
},
components:{
loading,
}
}
</script>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
深入理解vue.js中$watch的oldvalue與newValue
這篇文章主要給大家介紹了關(guān)于vue.js中$watch的oldvalue與newValue的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),并且介紹了關(guān)于watch的其他測(cè)試,對(duì)大家學(xué)習(xí)或者使用vue.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起看看吧。2017-08-08
vue 使用 sortable 實(shí)現(xiàn) el-table 拖拽排序功能
這篇文章主要介紹了vue 使用 sortable 實(shí)現(xiàn) el-table 拖拽排序功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
vue項(xiàng)目中的支付功能實(shí)現(xiàn)(微信支付和支付寶支付)
本文主要介紹了vue項(xiàng)目中的支付功能實(shí)現(xiàn)(微信支付和支付寶支付),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Vue動(dòng)態(tài)設(shè)置圖片時(shí)src不生效的原因及解決方法
這篇文章主要介紹了Vue動(dòng)態(tài)設(shè)置圖片時(shí)src不生效的原因及解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
VUE?html5-qrcode實(shí)現(xiàn)H5掃一掃功能實(shí)例
這篇文章主要給大家介紹了關(guān)于VUE?html5-qrcode實(shí)現(xiàn)H5掃一掃功能的相關(guān)資料,html5-qrcode是輕量級(jí)和跨平臺(tái)的QR碼和條形碼掃碼的JS庫,集成二維碼、條形碼和其他一些類型的代碼掃描功能,需要的朋友可以參考下2023-08-08

