大家好哇,我是梦辛工作室的灵,我又来了=-=,最近项目开发中,需实现一个加载效果,上图给大家看下:
感觉一般把,还是挺好写的,我就封装成了一个组件,方便大家以后使用,使用方法如下:
<loading color="颜色值" times="动画时长" count="多少跟划线" class="load_img" ></loading>
还是简单吧,原理其实也很简单,就是 n个正方形(中间一根线) 旋转 后就变成了,然后再加上一个 透明度的动画
下面是组件源代码:
loading.js
// components/loading/loading.js
Component({
/**
* 组件的属性列表
*/
properties: {
color:{
type:String,
value:"#0600BD"
},
times:{
type:Number,
value:5
},
count:{
type:Number,
value:30
}
},
/**
* 组件的初始数据
*/
data: {
countlist:[]
},
observers:{
"count": function(count_new){
let countlist = new Array(count_new).fill(0);
this.setData({
countlist
})
}
},
/**
* 组件的方法列表
*/
methods: {
}
})
//loading.wxml
<!--components/loading/loading.wxml-->
<view wx:for="{{countlist}}" wx:key="count" class="content flex_row flex_hcenter" style="transform: rotate({{(360 / countlist.length) * index}}deg);">
<view class="line" style="background-color: {{color}};animation: colorset {{times}}s infinite {{(times * 1000/ countlist.length) * index}}ms;opacity: {{ 1 - (1/countlist.length) * index}};"></view>
</view>
loading.wxss文章来源:https://www.toymoban.com/news/detail-533276.html
/* components/loading/loading.wxss */
.content{
width: 100%;
height: 100%;
border-radius: 50%;
position: absolute;
}
.line{
width: 2px;
height: 16px;
background: #ffffff;
}
@keyframes colorset{
from{
opacity: 1;
}
to{
opacity: 0;
}
}
.flex_row, .flex_column {
display: flex;
}
.flex_row {
flex-direction: row;
}
.flex_column {
flex-direction: column;
}
.flex_vcenter,.flex_center{
align-items: center
}
.flex_hcenter,.flex_center{
justify-content: center;
}
.flex_space{
justify-content: space-between;
}
.flex_around{
justify-content: space-around;
}
.flex_wrap{
flex-wrap: wrap;
}
.flex_grow_1{
flex-grow: 1;
}
.flex_end{
align-items: flex-end;
justify-content: flex-end;
}
收文章来源地址https://www.toymoban.com/news/detail-533276.html
到了这里,关于微信小程序组件 实现加载中效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!