前言
要实现一个spin效果,这里有2种实现实现方式:
往
img
或embed
标签中,传入svg文件(loading效果的svg)地址到src
特性中,就可以了如下所示旋转效果(更多资源,查看附录):
- 利用纯CSS3来绘制旋转效果 (下面将重点分析其绘制过程), 如下图所示:
DEMO效果展示,请点击 这里 查看
实现
代码如下所示:
模板代码
1 | <template> |
从上可知,模板代码非常简单,就是循环出了12个元素在一个容器中,构成 Spin
组件的主体,重要的是样式的编写,我们继续往下走👇
CSS代码 (采用stylus语法)
1 | @keyframes spin-fade { |
针对上述样式的解释:
- 创建一个行内块的父容器盒子,设置为相对定位
- 创建12个绝对定位的子元素,并设置其透明度为 .25 为后面动画打铺垫
- 给每个子元素的四个角设置水平半径为50%,垂直半径为20%的圆角
- 给每个子元素设置固定宽度2px,高度相对父容器自适应(占父容器的25%)
- 通过
top: 37.5%; left: calc(50% - 1px)
设置初始子元素为垂直居中的 - 通过
transform: rotate(30deg * (num - 6)) translateY(-150%)
让第一个子元素旋转-150deg 改变正反向,然后向正方向移动(即向下(因为改变了正方向))1.5(37.5 / 25 = 1.5)个子元素高度的距离,确定第一个元素的初始位置,其它11个子元素按同样的规则进行排布,最后形成一个圆形排布 - 最后给子元素设置动画,控制子元素的透明度,以 1/12 s 为间隔控制透明度的变化,形成视觉上的转动(其实只是子元素透明度的变化)
下面几张图分解关键步骤解释:
附录 ✨