本篇文章给大家带来的内容是关于如何使用纯CSS实现方块跳跃的动画(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

效果预览

源代码下载

https://github.com/comehope/front-end-daily-challenges

代码解读

定义 dom,容器中包含 2 个子元素,分别代表 1 个女生和一群男生(4个),每个 span 元素代表 1 个人(1 个方块):

居中显示:body {

margin: 0;

height: 100vh;

display: flex;

align-items: center;

justify-content: center;

}

定义容器尺寸和它的子元素布局:.container {

width: 8em;

height: 1em;

font-size: 35px;

display: flex;

justify-content: space-between;

}

画出 5 个方块,用边框作为辅助线帮助定位:.container span {

width: 1em;

height: 1em;

border: 1px dashed black; /* 辅助线 */

}

.boys {

width: 6em;

display: flex;

justify-content: space-between;

}

用伪元素设置元素的样式,使它们变得柔和一些,为男生和男生填上不同的颜色,同时删掉上一步的辅助线:.container span::before {

content: '';

position: absolute;

width: inherit;

height: inherit;

border-radius: 15%;

box-shadow: 0 0 0.2em rgba(0, 0, 0, 0.3);

}

.girl::before {

background-color: hotpink;

}

.boys span::before {

background-color: dodgerblue;

}

使 4 个男生色块的颜色逐渐变淡,增加一点层次感:.boys span:nth-child(1)::before {

filter: brightness(1);

}

.boys span:nth-child(2)::before {

filter: brightness(1.15);

}

.boys span:nth-child(3)::before {

filter: brightness(1.3);

}

.boys span:nth-child(4)::before {

filter: brightness(1.45);

}

接下来制作动画效果。

先增加女生移动的效果,同时颜色也做渐淡处理,后面其他动画的时间要保持一致,所以把动画时长设置为变量:.container span {

width: 1em;

height: 1em;

--duration: 3s;

}

.girl {

animation: slide var(--duration) ease-in-out infinite;

}

@keyframes slide {

from {

transform: translateX(0);

filter: brightness(1);

}

to {

transform: translatex(calc(8em - (1em * 1.25)));

filter: brightness(1.45);

}

}

然后增加第 1 个男生跳开的动画效果,注意从 15% 到 35% 旋转的原点是在元素的正上方:.boys span {

animation: var(--duration) ease-in-out infinite;

}

.boys span:nth-child(1) {

animation-name: jump-off-1;

}

@keyframes jump-off-1 {

0%, 15% {

transform: rotate(0deg);

}

35%, 100% {

transform-origin: -50% center;

transform: rotate(-180deg);

}

}

参考第 1 个男生的动画效果,再增加另外 3 个男生跳开的动画效果,区别只是调整了关键帧的时间,依次后延 15% 的时间:.boys span:nth-child(2) {

animation-name: jump-off-2;

}

.boys span:nth-child(3) {

animation-name: jump-off-3;

}

.boys span:nth-child(4) {

animation-name: jump-off-4;

}

@keyframes jump-off-2 {

0%, 30% {

transform: rotate(0deg);

}

50%, 100% {

transform-origin: -50% center;

transform: rotate(-180deg);

}

}

@keyframes jump-off-3 {

0%, 45% {

transform: rotate(0deg);

}

65%, 100% {

transform-origin: -50% center;

transform: rotate(-180deg);

}

}

@keyframes jump-off-4 {

0%, 60% {

transform: rotate(0deg);

}

80%, 100% {

transform-origin: -50% center;

transform: rotate(-180deg);

}

}

为第 1 个男生增加拟人的动画效果,这个效果写在 ::before 伪元素中,动画的过程是从正常到压扁、然后抻长、再压扁、最后恢复正常,注意从 25% 到 40% 的压扁变形,因为此时主元素已经翻个儿,所以 transform-origin 的原点和 从 5% 到 15% 的压扁变形的原点不一样:.boys span::before {

animation: var(--duration) ease-in-out infinite;

}

.boys span:nth-child(1)::before {

filter: brightness(1);

animation-name: jump-down-1;

}

@keyframes jump-down-1 {

5% {

transform: scale(1, 1);

}

15% {

transform-origin: center bottom;

transform: scale(1.3, 0.7);

}

20%, 25% {

transform-origin: center bottom;

transform: scale(0.8, 1.4);

}

40% {

transform-origin: center top;

transform: scale(1.3, 0.7);

}

55%, 100% {

transform: scale(1, 1);

}

}

参考第 1 个男生 ::before 伪元素的动画效果,再增加另外 3 个男生拟人的动画效果,区别只是调整了关键帧的时间,依次后延 15% 的时间:.boys span:nth-child(2)::before {

animation-name: jump-down-2;

}

.boys span:nth-child(3)::before {

animation-name: jump-down-3;

}

.boys span:nth-child(4)::before {

animation-name: jump-down-4;

}

@keyframes jump-down-2 {

20% {

transform: scale(1, 1);

}

30% {

transform-origin: center bottom;

transform: scale(1.3, 0.7);

}

35%, 40% {

transform-origin: center bottom;

transform: scale(0.8, 1.4);

}

55% {

transform-origin: center top;

transform: scale(1.3, 0.7);

}

70%, 100% {

transform: scale(1, 1);

}

}

@keyframes jump-down-3 {

35% {

transform: scale(1, 1);

}

45% {

transform-origin: center bottom;

transform: scale(1.3, 0.7);

}

50%, 55% {

transform-origin: center bottom;

transform: scale(0.8, 1.4);

}

70% {

transform-origin: center top;

transform: scale(1.3, 0.7);

}

85%, 100% {

transform: scale(1, 1);

}

}

@keyframes jump-down-4 {

50% {

transform: scale(1, 1);

}

60% {

transform-origin: center bottom;

transform: scale(1.3, 0.7);

}

65%, 70% {

transform-origin: center bottom;

transform: scale(0.8, 1.4);

}

85% {

transform-origin: center top;

transform: scale(1.3, 0.7);

}

100%, 100% {

transform: scale(1, 1);

}

}

至此,女生从左侧移动到右侧的动画效果已经完成。

把所有动画属性都加上 alternate 参数,使所有动画都往复执行,就实现了从右侧再回到左侧的效果:.girl {

animation: slide var(--duration) ease-in-out infinite alternate;

}

.boys span {

animation: var(--duration) ease-in-out infinite alternate;

}

.boys span::before {

animation: var(--duration) ease-in-out infinite alternate;

}

大功告成!

相关推荐:

如何使用纯CSS实现一个圆环旋转错觉的动画效果(附源码)

如何使用纯CSS实现蝴蝶标本的展示框效果

css 跳跃动画,如何使用纯CSS实现方块跳跃的动画(附源码)相关推荐

  1. 简单玩转ViewPager+Fragment动画效果,实现京东淘宝物流卡片效果 (附源码)

    物流卡片Demo 新版的京东和淘宝有一个交互感觉不错, 待收货订单会有类似探探那样的卡片效果, 滑动查看下一条物流的信息, 近期UI部门说要做这个效果, 于是我就写了一个Demo, 现在分享出来和大家 ...

  2. css怎样使弹跳的小球旋转,如何使用纯CSS实现小球跳跃台阶的动画效果(附源码)...

    本篇文章给大家带来的内容是关于如何使用纯CSS实现小球跳跃台阶的动画效果(附源码) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码下载 https://github ...

  3. html怎么让方块自动旋转,如何使用纯CSS实现一个圆环旋转错觉的动画效果(附源码)...

    本篇文章给大家带来的内容是关于如何使用纯CSS实现一个圆环旋转错觉的动画效果,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码下载 https://github.com ...

  4. css实现人走路效果,如何使用纯CSS实现一个人独自行走的动画效果(附源码)

    本篇文章给大家带来的内容是关于如何使用纯CSS实现一个人独自行走的动画效果(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码下载 https://github ...

  5. 雨伞连线题php fgetcsv,如何使用纯CSS实现一把雨伞开合的动画效果(附源码)

    本篇文章给大家带来的内容是关于如何使用纯CSS实现一把雨伞开合的动画效果(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码下载 https://github. ...

  6. php万圣节源码,如何使用纯CSS实现万圣节的toggle控件(附源码)

    本篇文章给大家带来的内容是关于如何使用纯CSS实现万圣节的toggle控件(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码地址 https://github ...

  7. html用css写彩虹,如何使用纯CSS实现彩虹条纹文字的效果(附代码)

    本篇文章给大家带来的内容是关于如何使用纯CSS实现彩虹条纹文字的效果(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码下载 https://github.co ...

  8. java转俯视图,如何使用纯CSS实现一个足球场的俯视图(附源码)

    本篇文章给大家带来的内容是关于如何使用纯CSS实现一个足球场的俯视图(附源码) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码下载 https://github.c ...

  9. 【CSS特效扫盲】精选40种纯CSS特效应用实例,肝了10个晚上整理纯CSS特效(上)(附源码下载)

    [写在前面]其实有时候经常会在某一天用到某种特效,然后就去网上找demo,千篇一律的CSS特效代码不说,更多的是滥竽充数,而且还没有特效预览图,因此针对我之前整理的CSS特效在这里做一个总结,希望给你 ...

最新文章

  1. a as as big rat_你知道填空中as的这个变态用法吗?
  2. JAVA面试必备的知识宝典(一)
  3. 046 实例11-自动轨迹绘制
  4. xp 无法用计算机名访问,WinXP工作组计算机无法访问的解决方法
  5. CToolTipCtrl使用详细解说
  6. 远程桌面中转,基于 UltraVNC Repeater(中继器)的远程桌面服务搭建,用于复杂网络环境
  7. Halcon 注册说明
  8. selenium爬取淘宝评论信息
  9. 三方四方聚合支付PHP网站源码-对接支付宝微信接口
  10. 内存不能为written或read的解决方案(比较简单)
  11. 关于codeblocks音乐播放
  12. Mac 重启后,连接不上wifi
  13. python卡通滤镜_纯Python综合图像处理小工具(3)10种滤镜算法
  14. 小白算法练习 NYOJ 吝啬的国度 dfs+邻接表
  15. 我奋斗了18年才和你坐在一起喝咖啡(转)
  16. 研究生院校推荐——复旦大学工研院
  17. Asp.net Ajax Control Toolkit设计编程备忘录(色眼窥观版)——第4回(忍者专辑)
  18. 盘点“杨超越杯编程大赛”中那些脑洞大开的项目
  19. wireshark抓包分析FTP
  20. 高精度乘法(c++实现)

热门文章

  1. SQL Server 安装注意事项
  2. Linux查看CPU,硬盘型号和端口占用等常用命令
  3. Unity3D 使用Windows系统朗读文字
  4. c语言字符AABB连续出现KMp,COMP9024 知识点整理+19T1 Final Exam试卷
  5. Qt/C++编写安防视频监控系统37-onvif预置位
  6. 自从得了神经病,整个人都精神多了
  7. 烟雨里,只愿与君一曲相和
  8. 豆瓣python源码_(附源码)Python爬虫之豆瓣攻坚战
  9. 扫地机器人石头爬坡_请问扫地机器人,石头,小米哪个好?
  10. 3GPP是干什么的?详解3GPP组织的历史,通信行业必读!