前言

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. 【 MATLAB 】通过不同样本数的同一个有限长序列作 DTFT 对比
  2. 盘点游戏行业的那些干货网站
  3. ZOJ 3879(大模拟)
  4. CF1004F Sonya and Bitwise OR
  5. VMWare虚拟机NAT模式下static IP
  6. Javascript学习总结 - JS基础系列三
  7. mysql设计学习_Mysql数据库设计学习
  8. oracle 中update select 和连接字符串配合使用
  9. SC命令---安装、开启、配置、关闭windows服务 bat批处理(转载)
  10. 【LeetCode】【数组】题号:*54,螺旋数组
  11. 浅谈数据结构-二叉树
  12. 【复习+知识补充】EL表达式:只能调用静态方法
  13. Atitit pwa app prblm sulo目录1.1.1. 安卓的chrome没有弹添加到桌面的弹窗 11.1.2. 如何判断是否从主屏幕访问 11.1.3. 如何监听添加到桌面事
  14. [并发]线程池关闭的问题
  15. win10家庭版升级到企业版的教程
  16. avr单片机动态数码管c语言,AVR单片机8位数码管显示的程序实现(两种方法介绍)...
  17. beego golang bootstrap-table做月度考勤(打卡、签到)统计表
  18. 影视后期算不算计算机类专业,影视后期是什么意思(后期剪辑属于什么专业)...
  19. 2016年7月的数据省市区数据
  20. vscode在html看到图片的插件_自从用了这款PPT插件,我才知道什么叫做高效办公!...

热门文章

  1. 中望3D2022 放样
  2. 原生javascript图片惰性延迟加载插件lazyload–兼容PC端手机端
  3. 《华林科纳-半导体工艺》高效硅太阳能电池
  4. python爬取英雄联盟所有皮肤_用Python爬取英雄联盟(lol)全部皮肤
  5. ffmpeg.exe的使用与环境设置
  6. 从一到二:利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试...
  7. mysql 查询汉字的全拼音以及查询各个汉字的拼音首字母
  8. 大话商学院番外篇(1)--人在旅途
  9. rust怎么在上门锁密码_rust密码锁队友怎么用 | 手游网游页游攻略大全
  10. Vue 2 中实现 CustomRef 方式防抖/节流