先来上一波效果图
这个加载有两个动画
1、svg图
2、css制作动态效果
首先是svg图,复制下列代码,新建一个文件,粘贴进去,然后修改文件后缀为svg即可
<!-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL -->
<svg width="44" height="44" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg" stroke="#000">
<g fill="none" fill-rule="evenodd" stroke-width="2">
<circle cx="22" cy="22" r="1">
<animate attributeName="r"
begin="0s" dur="1.8s"
values="1; 20"
calcMode="spline"
keyTimes="0; 1"
keySplines="0.165, 0.84, 0.44, 1"
repeatCount="indefinite" />
<animate attributeName="stroke-opacity"
begin="0s" dur="1.8s"
values="1; 0"
calcMode="spline"
keyTimes="0; 1"
keySplines="0.3, 0.61, 0.355, 1"
repeatCount="indefinite" />
</circle>
<circle cx="22" cy="22" r="1">
<animate attributeName="r"
begin="-0.9s" dur="1.8s"
values="1; 20"
calcMode="spline"
keyTimes="0; 1"
keySplines="0.165, 0.84, 0.44, 1"
repeatCount="indefinite" />
<animate attributeName="stroke-opacity"
begin="-0.9s" dur="1.8s"
values="1; 0"
calcMode="spline"
keyTimes="0; 1"
keySplines="0.3, 0.61, 0.355, 1"
repeatCount="indefinite" />
</circle>
</g>
</svg>
如想更换其他颜色,打开文件里面可以修改
接着,直接image引入添加样式就行了
然后就是css动效了,首先,html
<view class="loadText">
<image src="../../../image/puff.svg"></image> //这是svg加载图
登录中
<view class="loadTextBox">
<view style="margin-left: 5px;" class="{{isShow ? 'view1' : ''}}">.</view>
<view style="margin-left: 15px;" class="{{isShow ? 'view2' : ''}}">.</view>
<view style="margin-left:25px;" class="{{isShow ? 'view3' : ''}}">.</view>
</view>
</view>
然后是css
.loadText{
padding: 0.5rem 0;
width: 100%;
text-align: center;
margin: 80% auto;
position: fixed;
z-index: 111;
top: 0;
left:-1rem;
/* color: #fff; */
color: rgb(99, 99, 99);
font-size: 1.1rem;
/* text-shadow: 1px 1px 1px rgba(255,0,0,.1); */
}
.loadTextBox{
display: inline-block;
position: relative;
top: -1.5rem;
}
.loadTextBox view{
display: inline-block;
width: 0;
height: 0;
padding: 3px;
position: absolute;
}
.view1{
animation: am 0.8s linear;
animation-delay: 0s;
}
.view2{
animation: am 0.8s linear;
animation-delay: 0.25s;
}
.view3{
animation: am 0.8s linear;
animation-delay: 0.5s;
}
@keyframes am{
0%,100%{
top: 0rem;
}
50%{
top: -0.5rem;
}
}
.ishide{
animation: hide 0.5s linear;
animation-fill-mode: forwards
}
.show{
animation: show 0.5s linear;
animation-fill-mode: forwards;
}
@keyframes show{
0%{
opacity: 0
}
100%{
opacity: 1
}
}
@keyframes hide{
0%{
opacity: 1
}
100%{
opacity: 0
}
}
最后js添加循环
//定义
data: {
isShow: true // 是否显示'点'
}
----------------------------------
this.interView() //调用
-----------------------------------
interView:function(){
let that = this;
setInterval(function(){
if (that.data.isShow){
setTimeout(function(){
that.setData({
isShow: false
})
},500)
}else{
that.setData({
isShow: true
})
}
}, 600)
}