网站首页 > 基础教程 正文
作者: Lefex 素燕
转发链接:https://mp.weixin.qq.com/s/0klnoP6M90uU1g2g433swQ
前言
做动画最要的是思路,做多了,动画其实非常简单,我们今天来实现一个小菊花加载动画:
做动画的关键一步是「拆分」,这张图中包含了 12 根「小柱子」,每根小柱子的透明度不一样,让这 12 根「小柱子」旋转起来,就构成了整个动画:
做这个动画可以按照下面几步来实现:
第一步:画出 12 根小柱子,并设置不同的透明度。通过观察发现,我们可以画 12 个正方形,每个正方形中画 1 条竖线,通过旋转的方式来改变小柱子的位置:
代码可以这样写,创建一个 div 来包裹这 12 个正方形,通过 ::before 给正方形添加一个小柱子:
第二步:想把这 12 个正方形组合成一个圆,需要把它们旋转一下,每个正方形旋转 30度,正好是 1 圈(30*12=360),并设置不同的透明度:
代码类似这样,把每个元素进行旋转 30度,为不影响阅读体验,我只截了 3 个元素的代码图:
第三步:这 12 个正方形现在是竖直排列的,我们把它们重叠到一块,这些小柱子就组成了一个圆。
修改类选择器 dot 的 position 属性为 absolute,这时这些元素即可重叠起来:
为了好辨别,我给每个正方形加了边框,我把边框去掉就成了我们想要的效果:
第四步:让这个圆旋转起来就可以了:
旋转直接使用 CSS 的 animation 即可实现,这个地方需要大家注意一下,这里用的 timing-function 是 steps(12),关于 step 函数,在 小猴子跌落山崖之 linear、ease、ease-in 这节内容中我并没有提到,这里补存一下。steps 它可以把一个动画的 duration 分成几段,每段来完成一个动作,动画执行期间元素看起来并不是「平滑」地过度,比如钟表的秒针跳动:
这个小菊花的 Loading 也是让它有类似的效果,一蹦一蹦的感觉。
今天这节内容主要利用了 transform 的 rotate() 函数,在 让按钮“呼吸”一会(呼吸动画)这节内容中运用了 scale() 函数,transform 对于做动画是一把「尖刀」,关于 transform 还有很多属性值得学习:
本文借鉴了 vant-weapp 的设计思想。
推荐CSS学习相关文章
深入浅出CSS中彻底搞懂word-break、word-wrap、white-space
手把手详细教你优化CSS提高网站加载速度的21种方法汇总【实践】
作者: Lefex 素燕
转发链接:https://mp.weixin.qq.com/s/0klnoP6M90uU1g2g433swQ
猜你喜欢
- 2024-11-09 值得一看!这些CSS小技巧帮助你提升80%的效率
- 2024-11-09 (收藏)你不知道的CSS技巧 css使用教程
- 2024-11-09 那些常用却又常忘记的css样式 那些常用却又常忘记的css样式是什么
- 2024-11-09 前端开发之使用纯CSS实现炫酷Tab切换
- 2024-11-09 html页面常用css简单整理 html+css总结
- 2024-11-09 Vue项目接入Eslint与+Prettier+Husky自动格式化代码
- 2024-11-09 CSS性能优化你知多少 css3优化
- 2024-11-09 Web开发学习笔记(19)——CSS(6)常用样式
- 2024-11-09 如何用一行 CSS 实现 10 种现代布局?
- 2024-11-09 手把手搭建Vue3中后台框架-初始化项目
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)