制作css旋转加载动画的核心是使用@keyframes定义动画关键帧,并通过animation属性应用动画,结合transform: rotate()实现旋转效果;1. 首先创建一个圆形div元素,利用border属性制作圆环样式,通过border-top设置高亮色;2. 使用@keyframes定义从0deg到360deg的旋转动画;3. 将动画通过animation属性绑定到元素,设置1s时长、linear速度曲线和infinite无限循环;4. 若动画卡顿,应优先使用transform触发gpu硬件加速,避免使用left/top等引发重排的属性;5. 可通过animation-timing-function使用ease-in-out或cubic-bezier优化视觉流畅感;6. 在关键动画元素上合理使用will-change: transform提示浏览器提前优化,但避免滥用;7. 检查并减少页面中其他复杂样式或javascript对渲染性能的影响;8. 实现多层动画可通过嵌套元素或伪元素::before/::after,为不同层级设置不同旋转速度、方向或延迟;9. 复杂形状可结合border技巧、clip-path裁剪或transform-origin调整旋转中心;10. 为增强动画生动性,可结合transform的scale()实现脉冲效果、translate()添加位移、opacity实现透明度变化、border-color或background-color实现颜色过渡;11. 使用filter属性添加drop-shadow或blur等视觉效果提升层次感;12. 所有效果应协调统一,避免过度堆砌,确保动画自然流畅且性能良好,最终实现一个视觉吸引且高效运行的加载动画。

CSS制作旋转加载动画,核心确实在于
@keyframes
animation
transform: rotate()
要制作一个基本的旋转加载动画,我们可以先准备一个简单的HTML元素,比如一个
div
@keyframes
div
<div class="loader"></div>
.loader {
width: 50px;
height: 50px;
border: 5px solid #f3f3f3; /* 浅灰色背景 */
border-top: 5px solid #3498db; /* 蓝色旋转部分 */
border-radius: 50%;
animation: spin 1s linear infinite; /* 应用动画 */
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}遇到动画卡顿,这真的挺让人头疼的,尤其是在一些性能要求比较高的场景或者老旧设备上。通常,这不单单是代码写得对不对的问题,更多是浏览器渲染机制和性能优化的考量。
立即学习“前端免费学习笔记(深入)”;
首先,最直接的优化点是利用CSS的硬件加速。浏览器在处理
transform
opacity
filter
transform: rotate()
left
top
其次,
animation-timing-function
linear
ease-in-out
cubic-bezier
再来,可以考虑使用
will-change
.loader
will-change: transform;
will-change
最后,检查一下是不是有其他复杂的CSS样式或者JavaScript操作在同时运行,它们可能会抢占渲染资源,导致动画卡顿。有时候,一个看似简单的动画,背后可能牵扯到整个页面的性能瓶颈。
单一的圆环旋转固然经典,但如果想做出更酷炫、更有识别度的加载效果,多层或者复杂形状的旋转是必经之路。
一种常见的做法是利用嵌套元素。比如,你可以有一个外层
div
div
div
animation
<div class="outer-loader">
<div class="inner-loader"></div>
</div>.outer-loader {
width: 60px;
height: 60px;
border: 6px solid #f3f3f3;
border-top: 6px solid #e74c3c; /* 红色 */
border-radius: 50%;
animation: spin-outer 1.5s linear infinite;
display: flex; /* 方便内部元素居中 */
justify-content: center;
align-items: center;
}
.inner-loader {
width: 30px;
height: 30px;
border: 4px solid #f3f3f3;
border-top: 4px solid #f1c40f; /* 黄色 */
border-radius: 50%;
animation: spin-inner 0.8s linear infinite reverse; /* 反向旋转 */
}
@keyframes spin-outer {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
@keyframes spin-inner {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}除了嵌套,伪元素
::before
::after
transform-origin
对于更复杂的形状,比如不是简单的圆环,而是更具设计感的几何图形,可以考虑使用
border
clip-path
border
transform
只靠旋转,动画可能会显得有点单调。要想让加载动画看起来更富有生命力,我们可以将旋转与其他CSS属性巧妙地结合起来。这就像给动画加了点“调料”,让它更有味道。
transform
rotate()
scale()
translate()
改变
opacity
颜色变化也是一个非常直观且有效的增强手段。通过
@keyframes
border-color
background-color
/* 结合了旋转、缩放和颜色变化的加载动画 */
.fancy-loader {
width: 60px;
height: 60px;
border: 6px solid;
border-radius: 50%;
animation: fancy-spin 2s ease-in-out infinite;
}
@keyframes fancy-spin {
0% {
transform: rotate(0deg) scale(1);
border-color: #3498db #f3f3f3 #f3f3f3 #f3f3f3;
}
25% {
transform: rotate(90deg) scale(1.1);
border-color: #2ecc71 #f3f3f3 #f3f3f3 #f3f3f3;
}
50% {
transform: rotate(180deg) scale(1);
border-color: #e74c3c #f3f3f3 #f3f3f3 #f3f3f3;
}
75% {
transform: rotate(270deg) scale(1.1);
border-color: #f1c40f #f3f3f3 #f3f3f3 #f3f3f3;
}
100% {
transform: rotate(360deg) scale(1);
border-color: #3498db #f3f3f3 #f3f3f3 #f3f3f3;
}
}此外,
filter
drop-shadow
blur
以上就是CSS怎样制作旋转加载动画?@keyframes关键帧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号