“季节变换,好多人忘了好多人,好多人代替好多人,好多人有好多遗憾,好多人是好多人的遗憾”

实现uni-app简单实现全屏文章详情加载动画难度不大原理就是:星宿UI 在点击文章详情之后先出现加载框,等待数据请求返回成功后再关闭加载框
但是实现方式有两种,第一种就是最简单的使用uni.showModal(),请求结束后执行uni.hideLoading();其中我们可以根据接口返回的statusCode做不同的提示,不足的就是无法自定义加载的图标
方式一:效果图

方式一:案例
<template>
<view class="">
<view class="rui-d">
加载成功:{{ ruiData }}
</view>
</view>
</template>
<script>
export default {
data() {
return {
lodint: false,
ruiData: []
}
},
onLoad() {
this.loding();
},
methods: {
// 加载动画 方式一 uni.showModal(OBJECT)
loding() {
uni.showLoading({
title: '加载中'
});
uni.request({
url: 'https://www.frbkw.com/wp-json/wp/v2/posts?categories=5',
success: (res) => {
console.log(res)
if (res.statusCode == 200) {
uni.hideLoading();
this.ruiData = res.data;
} else {
uni.showLoading({
title: '加载失败'
});
}
}
})
},
}
}
</script>
<style>
.rui-d{
margin: 20upx;
}
</style>
第二种就是自定义的,在必要的前提下 我们还得给程序添加一个全屏的背景层,这个取决于动画的色彩和展示效果,需要由v-if来时控制隐藏和显示,但有时候会出现一种情况,就是你的接口加载速度太快,有一种比较生硬的感觉,大家可以写一个定时器 让数据晚一丢丢在赋值
方式二:效果图

方式二:案例
<template>
<view class="">
<view class="lodint" v-if="lodint">
<image class="fengrui-img" src="../../static/loding.gif" mode=""></image>
</view>
<view class="rui-d">
{{ ruiData }}
</view>
</view>
</template>
<script>
export default {
data() {
return {
lodint: true,
ruiData: []
}
},
onLoad() {
this.loding();
},
methods: {
// 加载动画 方式二 自定义加动画
loding() {
uni.request({
url: 'https://www.frbkw.com/wp-json/wp/v2/posts?categories=5',
success: (res) => {
console.log(res)
if (res.statusCode == 200) {
// 延迟赋值
setTimeout(() => {
this.lodint = false
this.ruiData = res.data;
}, 600)
} else {
setTimeout(() => {
this.lodint = false
}, 1000)
uni.showLoading({
title: '加载失败'
});
}
}
})
},
}
}
</script>
<style>
.lodint {
width: 50%;
height: 30%;
border-radius: 20upx;
overflow: hidden;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.fengrui-img {
height: 100%;
width: 100%;
}
.rui-d{
margin: 20upx;
}
</style>
总结
如果界面没有很高的需求方式一其实uni.showModal其实就已经很好了,如果有自定义动画的需求,那我们在选择方式二的同时也可以在插件市场寻找插件
