微信小程序实现自定义加载图标功能


Posted in Javascript onJuly 19, 2018

效果图

微信小程序实现自定义加载图标功能

实现思路

1.首先通过HTML+CSS实现加载动画的静态效果;

2.根据需求给每个动画设计不同的动画效果。

例如第一个加载图标的静态绘制

1、首先确定动画的盒子宽高;

2、设置盒子中每一个长方形的宽高以及定位(注意:此处需要将长方形的旋转中心点移动到长方形的右侧边终点,方便后期以该点旋转。);

3、通过长方形盒子的伪元素,设置显示的长方形背景和宽高,同时进行定位。

4、由于在第二步的时候,已经将旋转中心移动,此处我们直接对每一个盒子中长方形进行旋转(注意:旋转角度 = 360 / 盒子中长方形个数)。

.circle-line{
  width: 100px;
  height: 100px;
  display: inline-block;
  position: relative;
}
.circle-line text{
  display: block;
  width: 50%;
  height: 5px;
  opacity: .7;
  position: absolute;
  top: calc(50% - 2.5px);
  left: 0px;
  transform-origin: center right; 
}
.circle-line text::before{
  content: '';
  display: block;
  width: 15px;
  height: 5px;
  position: absolute;
  top: 0;
  right: 10px;
  background-color: blue;
}
.circle-line text:nth-child(1){
  transform: rotate(0deg);
}
.circle-line text:nth-child(2){
  transform: rotate(45deg);
}
.circle-line text:nth-child(3){
  transform: rotate(90deg);
}
.circle-line text:nth-child(4){
  transform: rotate(135deg);
}
.circle-line text:nth-child(5){
  transform: rotate(180deg);
}
.circle-line text:nth-child(6){
  transform: rotate(225deg);
}
.circle-line text:nth-child(7){
  transform: rotate(270deg);
}
.circle-line text:nth-child(8){
  transform: rotate(315deg);
}

动画制作

观察发现动画只是针对每个长方形的透明度进行改变,所以动画采用从0.05到0.9的透明度循环改变。

@keyframes circle {
  0%{
    opacity: 0.05;
  }
  100%{
    opacity: 0.9;
  }
}

进行动画绑定

.circle-line text{
  animation: circle 1.5s linear infinite; 
}

动画绑定完成,发现所有的整个图标一起显示消失,那么也就是缺少了对单个个体的动画处理,延迟动画时间,使其依次渐变。

单个动画处理

.circle-line text:nth-child(1){
  animation-delay: 0.2s;
}
.circle-line text:nth-child(2){
  animation-delay: 0.4s;
}
.circle-line text:nth-child(3){
  animation-delay: 0.6s;
}
.circle-line text:nth-child(4){
  animation-delay: 0.8s;
}
.circle-line text:nth-child(5){
  animation-delay: 1s;
}
.circle-line text:nth-child(6){
  animation-delay: 1.2s;
}
.circle-line text:nth-child(7){
  animation-delay: 1.4s;
}
.circle-line text:nth-child(8){
  animation-delay: 1.6s;
}

注意:单个动画延迟的时间必须超过动画执行的总时间,防止一个动画执行完成后的卡顿。

总结

以上所述是小编给大家介绍的微信小程序实现自定义加载图标功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Jquery实现页面加载时弹出对话框代码
Apr 19 Javascript
原生js和jQuery随意改变div属性style的名称和值
Oct 22 Javascript
javascript实时显示当天日期的方法
May 20 Javascript
ES6的新特性概览
Mar 10 Javascript
javascript鼠标滑过显示二级菜单特效
Nov 18 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
Dec 14 Javascript
jquery获取select,option所有的value和text的实例
Mar 06 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
Mar 15 Javascript
详解node如何让一个端口同时支持https与http
Jul 04 Javascript
vue项目中的webpack-dev-sever配置方法
Dec 14 Javascript
小程序click-scroll组件设计
Jun 18 Javascript
Vue 中 a标签上href无法跳转的解决方式
Nov 12 Javascript
Angular5集成eventbus的示例代码
Jul 19 #Javascript
微信小程序实现弹出菜单
Jul 19 #Javascript
微信小程序实现之手势锁功能实例代码
Jul 19 #Javascript
React组件重构之嵌套+继承及高阶组件详解
Jul 19 #Javascript
微信小程序实现折叠展开效果
Jul 19 #Javascript
详解Angularjs 自定义指令中的数据绑定
Jul 19 #Javascript
微信小程序实现天气预报功能
Jul 18 #Javascript
You might like
php 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
一个简单的网页密码登陆php代码
2012/07/17 PHP
定义php常量的详解
2013/06/09 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
2016/11/21 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
PHP实现的函数重载功能示例
2018/08/03 PHP
js左侧三级菜单导航实例代码
2013/09/13 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
javascript数组排序汇总
2015/07/07 Javascript
浅谈vue-router 路由传参的方法
2017/12/27 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
详解vue中async-await的使用误区
2018/12/05 Javascript
JavaScript对JSON数组简单排序操作示例
2019/01/31 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
Python多线程下载文件的方法
2015/07/10 Python
实例讲解python中的序列化知识点
2018/10/08 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
多媒体专业自我鉴定
2014/02/28 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
实习单位指导教师评语
2014/12/30 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
MySQL新手入门进阶语句汇总
2022/09/23 MySQL