标签:动画 loading app height width 源码 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液体实现加载动画的相关代码, 更多内容欢迎关注之后的文章
标签:动画,loading,app,height,width,源码,CSS 来源: https://blog.csdn.net/yb1314111/article/details/120179246
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。