前言

Hello!小伙伴!
非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~
 
自我介绍 ଘ(੭ˊᵕˋ)੭
昵称:海轰
标签:程序猿|C++选手|学生
简介:因C语言结识编程,随后转入计算机专业,有幸拿过国奖、省奖等,已保研。目前正在学习C++/Linux(真的真的太难了~)
学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!
 
【动画消消乐】 平时学习生活比较枯燥,无意之间对一些网页、应用程序的过渡/加载动画产生了浓厚的兴趣,想知道具体是如何实现的? 便在空闲的时候学习下如何使用css实现一些简单的动画效果,文章仅供作为自己的学习笔记,记录学习生活,争取理解动画的原理,多多“消灭”动画!

效果展示

Demo代码

HTML

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="style.css"><title>Document</title></head><body><section><span></span></section></body></html>

CSS

html, body {margin: 0;height: 100%;
}body {display: flex;justify-content: center;align-items: center;background: #93b5cf;
}section {width: 650px;height: 300px;padding: 10px;position: relative;display: flex;align-items: center;justify-content: center;border: 2px solid white;
}span {position: relative;animation: cloud 5s ease-in-out infinite;background: white;border-radius: 50%;box-shadow: white 65px -15px 0 -4px, white 25px -25px, white 30px 10px, white 60px 15px 0 -10px, white 85px 5px 0 -5px;height: 50px;width: 50px;margin-left: -60px;
}span:after {animation: cloud_shadow 5s ease-in-out infinite;background: black;border-radius: 50%;content: '';height: 15px;width: 120px;opacity: 0.2;position: absolute;left: 5px;bottom: -60px;
}@keyframes cloud {50% {transform: translateY(-20px);}
}@keyframes cloud_shadow {50% {transform: translateY(0px) scale(.7);opacity: .05;}
}

原理详解

步骤1

使用span标签,设置为

  • 相对定位
  • 宽度、高度均为50px
  • 背景色:白色
span {background: white;height: 50px;width: 50px;position: relative;
}

效果图如下

步骤2

利用box-shadow属性,为span添加5个阴影

 box-shadow:  red 65px -15px 0 -4px,   /*阴影1*/orange 25px -25px,       /*阴影2*/yellow 30px 10px,        /*阴影3*/green 60px 15px 0 -10px, /*阴影4*/blue 85px 5px 0 -5px;    /*阴影5*/

效果图如下

步骤3

span圆角化

span {border-radius: 50%;
}

效果图如下

步骤4

将5个阴影的颜色都修改为白色

  box-shadow: white 65px -15px 0 -4px,   /*阴影1*/white 25px -25px,          /*阴影2*/white 30px 10px,           /*阴影3*/white 60px 15px 0 -10px,   /*阴影4*/white 85px 5px 0 -5px;     /*阴影5*/

效果图如下

步骤5

将span左移60px

span {margin-left: -60px;
}

得到一朵小白云

步骤6

为span添加动画

动画效果描述为:白云上下移动

使用translateY属性对span进行y轴(竖直方向)的上下移动

  • 初始(0%):原位置
  • 中间(50%):向上移动20px
  • 末尾(100%):原位置

animation动画代码为:

animation: cloud 5s ease-in-out infinite;
@keyframes cloud {/*忽略0% 100% 因为span需要回到原位置*/50% {transform: translateY(-20px);}
}

效果图如下

步骤7

使用span::after伪元素充当白云的阴影,设置为

  • 绝对定位( left: 5px bottom: -60px)
  • 高度15px 宽度120px
  • 背景色:黑色
  • 颜色透明度:0.2
span:after {background: black;content: '';height: 15px;width: 120px;opacity: 0.2;position: absolute;left: 5px;bottom: -60px;
}

效果图如下

步骤8

span::after圆角化

span:after {border-radius: 50%;
}

效果图如下

步骤9

为span::after添加动画

效果

  • 当白云向上移动,阴影变小,颜色变浅;
  • 向下移动,阴影变大,颜色变深
span:after {animation: cloud_shadow 5s ease-in-out infinite;
}
@keyframes cloud_shadow {50% {transform: translateY(20px) scale(.7);opacity: .05;}
}

最终效果图如下

注意:从效果图中可以发现,其实阴影部分只是大小、颜色深度在发生变化,其位置是没有发生变化的。这是因为span动画中50%时刻,span执行translateY(-20px),倘若span::after没有执行translateY(20px),那么span::after将一起移动20px。(这里本质就是两个效果相抵消;了,所以span::after的位置没有发生变化)

如果span::after没有设置translateY(20px)

那么就会出现下面的效果:阴影上下也在移动

结语

文章仅作为学习笔记,记录从0到1的一个过程

希望对您有所帮助,如有错误欢迎小伙伴指正~

我是海轰ଘ(੭ˊᵕˋ)੭,如果您觉得写得可以的话,请点个赞吧

谢谢支持❤️

【动画消消乐】HTML+CSS 白云飘动效果 072相关推荐

  1. html白云飘动效果特效代码,css3实现简单的白云飘动背景特效

    这是一款非常简单的纯CSS3白云飘动背景特效.该白云飘动特效使用CSS animation动画来控制不同的白云,以不同的速度进行运动,形成白云飘动的效果. HTML结构 该白云飘动特效的HTML结果非 ...

  2. html白云飘动效果特效代码,css3实现简单的白云飘动背景特效代码示例

    本篇文章小编给大家分享一下css3实现简单的白云飘动背景特效代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 这是一款非常简单的纯CSS3白云飘 ...

  3. 【动画消消乐】纯CSS绘制一朵白云 071

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  4. 【动画消消乐 】HTML+CSS 吃豆豆动画 073

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  5. 【动画消消乐】HTML+CSS 自定义加载动画 068

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  6. 【动画消消乐|CSS】086.炫酷水波浪Loading过渡动画

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  7. 【动画消消乐】HTML+CSS 自定义加载动画 064(currentColor的妙用!)

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专 ...

  8. 【动画消消乐】HTML+CSS 自定义加载动画 065

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  9. java开心消消乐代码_Vue实现开心消消乐游戏算法

    摘要:这篇Vue栏目下的"Vue实现开心消消乐游戏算法",介绍的技术点是"开心消消乐.Vue.开心.游戏.算法.实现",希望对大家开发技术学习和问题解决有帮助. ...

最新文章

  1. 【错误记录】PyCharm 运行 Python 程序报错 ( PEP 8: E402 module level import not at top of file )
  2. 机器学习中的数学(4)-线性判别分析(LDA), 主成分分析(PCA)
  3. Python 读写操作Excel —— 安装第三方库(xlrd、xlwt、xlutils、openpyxl)
  4. Linux内存管理初探
  5. Script:Generate A DDL Script For A Table
  6. 研究:打乒乓球可预防近视
  7. 解决js跨域使用nginx配置问题
  8. Java并发编程:线程的基本状态
  9. Ansible 学习总结(6)—— Ansible 19个常用模块使用示例
  10. Excel2021 如何将左侧A列数据填B列空白处A列数据合并到B列
  11. 万用表二极管档位点亮发光二极管LED
  12. 如何用 ISO 镜像制作 U 盘安装盘(通用方法、无需 WinPE)
  13. 聪明的kk nyoj 171
  14. [割点问题]HOJ 12307 Disconnected Pair
  15. left join一对多只保留一条结果的解决方法
  16. 测试中的指数爆炸问题
  17. Activiti 从入门到精通
  18. 程序人生——苏嵌第三天
  19. 遗传算法工具箱Optimization
  20. 又出事了?网站被攻击了?高中生?

热门文章

  1. 10大顶尖的业务分析技术(BPM、头脑风暴、猫窝 、MoSCoW、MOST、PESTLE、六顶思考帽 , 5why,非功能需求分析 )
  2. 【数据库数据恢复】MySQL数据库误删除未备份的数据恢复案例
  3. 当前IPFS排行榜有哪些公司值得我们选择?
  4. C# 引用Indesign
  5. 微信小程序最新快速获取头像和昵称方式
  6. 用c语言解三角函数公式大全初中,初中数学三角函数公式必备大全
  7. JavaScript 滑动验证
  8. 提高计算机桌面性能,win7系统降低桌面画面质感提升电脑性能的操作方法
  9. 【支付宝】使用支付宝支付
  10. photoshop ps 平方符号 打出方法