- 资源介绍
- 更新记录
- 安装教程
怎么使用纯 CSS 实现有趣的点赞动画?下面本篇文章就带大家了解一下巧妙借助 transition实现点赞动画的方法,希望对大家有所帮助!
在各种短视频界面上,我们经常会看到类似这样的点赞动画:
非常的有意思,有意思的交互会让用户更愿意进行互动。
那么,这么有趣的点赞动画,有没有可能使用纯 CSS 实现呢?那当然是必须的,本文,就将巧妙的借助 transition
,仅仅使用 CSS 完成这么一个点赞动画。
实现不同表情的不断上升
如果使用纯 CSS 实现这一整套动画的话。我们首先需要实现一段无限循环的,大量不同的表情不断向上漂浮的动画。
像是这样:
这个整体还是比较容易实现的,核心原理就是同一个动画,设置不同的 transition-duration
,transition-dalay
,和一定范围内的旋转角度。
我们首先要实现多个表情,一个 DOM 标签放入一个随机的表情。
我们可以手动一个一个的添加:
当然,我个人觉得这样太麻烦。我习惯利用 SASS 的循环函数及随机函数,利用伪元素的 content
去随机生成不同表情。像是这样:
这样,我们就能得到 50 个叠加在一起的表情:
因为透明度为 1 的缘故,只能看到最上面的几个表情,实际上这里叠加了 50 个不同的表情。
这里的核心就是 content: nth($expression, random(length($expression)))
,我们利用了 SASS 的 random 和 length 和 nth 等方法,随机的将 $expression
列表中的表情,添加给了不同的 li 的 before 伪元素的 content 内。
接下来,我们需要让它们动起来。
这个简单,添加一个无限的 transform: translate()
动画即可:
效果如下:
OK,由于 50 个元素都叠加在一起,所以我们需要将动画区分开来,我们给它们添加随机的动画时长,并且,赋予不同的负 transition-delay
值:
效果如下:
效果已经非常接近我们想要的了!这里有一点点的跳跃,需要理解 move #{random() * 2500 + 1500}ms infinite #{random() * 4000 / -1000}s linear
这里大段代码:
#{random() * 2500 + 1500}ms
生成 1500ms ~ 4000ms 之间的随机数,表示动画的持续时长
#{random() * 4000 / -1000}s
生成 -4000ms ~ 0s 之间的随机数,表示负的动画延迟量,这样做的目的是为了让动画提前进行
如果你对负的
transition-delay
的作用还不了解,可以看看我的这篇文章 — 深入浅出 CSS 动画
到这,还是不够随机,我们再通过随机添加一个较小的旋转角度,让整体的效果更加的随机:
这里 transform: rotate(#{random() * 80 - 40}deg)
的作用就是随机生成 -40deg ~ 40deg 的随机数,产生一个随机的角度。
至此,我们就得到了这样一个效果:
利用 transition 化腐朽为神奇
到这里。很多同学可能还不明白,明明是点赞一次产生一个表情,为什么需要一次生成这么多不断运动的表情效果呢?
这是因为,由于 CSS 没法直接正面做到点击一次,生成一个表情,所以我们需要换一种思路实现。
如果这些表情一直都是在运动的,只不过不点击的时候,它们的透明度都为 0,我们要做的,就是当我们点击的时候,让它们从 opacity: 0
变到 opacity: 1
。
要实现这一点,我们需要巧妙的用到 transition
。
我们以一个表情为例子:
默认它的透明度为
opacity: 0.1
点击的时候,它的透明度瞬间变成
opacity: 1
然后,通过
transition-delay
让opacity: 1
的状态保持一段时间后逐渐再消失,变回
opacity: 0.1
看上去有亿点点复杂,代码会更容易理解:
效果如下:
一定要理解上面的代码!巧妙地利用 transition
在正常状态和 active
状态下的变化,我们实现了这种巧妙的点击效果。
如果我们把初始的 opacity: 0.1
改成 opacity: 0
呢?就会是这样:
好,我们结合一下上面两个动画:
我们将所有的表情,默认的透明度改为
0.1
被点击的时候,透明度变成
1
透明度在
1
维持一段时间,逐渐消失
代码如下:
效果如下:
嘿,是不是有那么点意思了!
好最后一步,我们通过一个点击按钮引导用户点击,并且给与一个点击反馈,每次点击的时候,点赞按钮放大 1.1 倍,同时,我们把默认表情的透明度从 opacity: 0.1
彻底改为 opacity: 0
。
这样,整个动画的完整的核心代码:
这里,需要注意的是:
点赞的按钮,通过了父元素
.g-wrap
的伪元素实现,这样的好处是,子元素 li 的:active
点击事件,是可以冒泡传给父元素的,这样每次子元素被点击,我们都可以放大一次点赞按钮,用于实现点击反馈;稍微修改一下缓动函数,让整体效果更为均衡合理。
这样,我们就得到了题图一开始的效果,利用纯 CSS 实现的点赞动画:
完整的代码,你可以戳这里:CodePen Demo — Like Animation
猜你喜欢
-
可用Python实现NumPy读取和保存点云数据教程
2022-11-05 -
实现由抖音、快手、知乎、短信等外部APP或浏览器跳转到微信
2022-04-27 -
wordpress tags标签改造id显示加后缀html显示
2022-09-18 -
如何将自己的代码提交到码云
2022-08-17 -
利用HBuilderX把网页封装成APP教程
2022-01-29 -
解决mysql 错误1053问题
2021-12-24 -
Discuz论坛怎么添加广告位?自定义广告位方法浅析
2022-04-27 -
SQL Server跨服务器操作数据库的图文方法
2022-12-05 -
实战教程vite+vue3.0+ts中如何封装axios?
2022-10-12 -
WordPress插件怎么查找并安装
2021-12-24
-
如何用GitHub下载项目到本地
2021-11-25 -
在宝塔安装VERYNGINX 更好防御被CC
2022-09-18 -
百度编辑器UEditor借助Prism.js实现文章代码高亮显示实用教程
2022-06-27 -
前端云原生的微信小程序云服务配置详解
2022-06-12 -
Oracle锁表解决方法的详细记录详解
2022-10-11 -
日主题Ripro个人支付宝当面付(免签约)详细教程
2021-12-17 -
MySQL数据库在线修改表结构的方法
2022-11-06 -
帝国CMS简单教程设置支付宝网站支付功能
2022-03-29 -
帝国CMS安装时You have an error in your SQL syntax报错
2022-05-04 -
新手入门:BT宝塔面板如何初始化(教程分享)
2022-06-27
猜你在找
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
5.如有侵权请联系客服邮件214496599@qq.com
猴王源码 » 保姆教程:用 transition 实现短视频 APP的点赞动画
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 猴王源码
- 2022-11-06Hi,初次和大家见面了,请多关照!