直播app系统源码通过CSS液体实现加载动画
直播app系统源码通过CSS液体实现加载动画
首先我们要让元素能够旋转起来,可以使用transform中的rotate进行2D的360deg旋转。
紧接着我们可以通过CSS变量(--开头的形式)结合animation-delay来控制每个元素的动画从何时开始。
最后为了让整个旋转的元素能够呈现流体形,我们需要使用filter滤镜来特殊处理一下,这里涉及到一些复杂的颜色处理,建议直接上svg的 feColorMatrix,这也是过滤的一种类型,使用矩阵来影响颜色的通道(rgba)。
HTML
//HTML <body> <div class="loading"> <span style="--i:1"></span> <span style="--i:2"></span> <span style="--i:3"></span> <span style="--i:4"></span> <span style="--i:5"></span> <span style="--i:6"></span> <span style="--i:7"></span> </div> <svg> <!-- filter元素id属性顶一个滤镜的唯一名称, feGaussianBlur 定义模糊效果, in="SourceGraphic"这个部分定义了由整个图像创建效果, stdDeviation属性定义模糊量 --> <filter id="gooey"> <feGaussianBlur in="SourceGraphic" stdDeviation="10" /> <!-- feColorMatrix 用于彩色滤光片转换 --> <feColorMatrix values=" 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -10 " /> <!-- values=" R G B A 1 1 0 0 0 0 R = 1*R + 0*G + 0*B + 0*A + 0 0 1 0 0 0 G = 0*R + 1*G + 0*B + 0*A + 0 0 0 1 0 0 B = 0*R + 0*G + 1*B + 0*A + 0 0 0 0 20 -10 A = 0*R + 0*G + 0*B + 1*A + 0 " --> </filter> </svg> </body>
CSS
//CSS * { margin: 0; padding: 0; } body { display: flex; min-height: 100vh; overflow: hidden; justify-content: center; align-items: center; background: #010b10; } svg { width: 0; height: 0; } .loading { width: 200px; height: 200px; position: relative; filter: url(#gooey); } .loading span { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: block; animation: loading 4s ease-in-out infinite; /* var函数用来插入css变量的值,css变量名称以--开头 */ animation-delay: calc(0.2s * var(--i)); } .loading span::before { content: ''; position: absolute; top: 0; left: calc(50% - 20px); width: 40px; height: 40px; background: linear-gradient(#fce4ec, #03a9f4); border-radius: 50%; box-shadow: 0 0 30px #03a9f4; } @keyframes loading { 0% { transform: rotate(0deg); } 50%, 100% { transform: rotate(360deg); } }
以上就是直播app系统源码通过CSS液体实现加载动画的相关代码, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现