跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

CSS如何制作Loading加载动画_通过CSS圆环与旋转实现

要实现顺滑旋转的圆环加载动画,须用@keyframes定义匀速旋转、显式声明animation-timing-function: linear、统一用rotate()、单边实色+三边transparent配border-radius: 50%、宽高相等、box-sizing: border-box、transform-origin: center,并针对IE11添加-ms-前缀及适配写法。 用
@keyframes
控制圆环旋转节奏,别直接写
animation: spin 1s infinite
浏览器默认的
ease
缓动会让旋转“卡一下”,尤其在首帧和末帧,看起来像顿挫而不是流畅加载。真正顺滑得靠
linear
—— 从头到尾匀速转。 写法必须是
@keyframes spin { to { transform: rotate(360deg); } }
,不能只写
from
和
to
都空着
animation-timing-function: linear
必须显式声明,CSS 动画默认不是线性 别用
rotateZ()
,有些旧版 Safari 对
Z
轴解析不稳定,统一用
rotate()
圆环缺口靠
border
+
transparent
实现,不是用
clip-path
想做经典“断开一圈”的 Loading 圆环,最稳的方式是用单边实色边框 + 其余三边透明,再配合
border-radius: 50%
。用
clip-path
在 iOS 15.4 之前有渲染撕裂,且无法和
transform
同时硬件加速。 容器宽高必须相等,比如
width: 40px; height: 40px;
,否则圆会压扁
border: 4px solid #007bff;
只设一边?不行——得设四边,再把三边设为
transparent
,例如:
border: 4px solid transparent; border-top-color: #007bff;
别漏掉
box-sizing: border-box
,否则宽高会算错,圆环偏大或居中失败 旋转中心对不齐?检查
transform-origin
和盒模型 常见现象是圆环转起来像“晃动”或“绕着左上角跑”,本质是旋转原点没落在中心。默认
transform-origin
是
50% 50%
,但一旦父容器有
padding
、子元素有
margin
或用了
flex
且没设
align-items: center
,视觉中心就偏了。 给 loading 元素加
transform-origin: center
(显式写死,别依赖默认) 如果它被塞在
button
里,确保 button 没设
text-align: left
或
padding
不对称 避免用
position: absolute
+
top: 50%; left: 50%
居中后再旋转——此时
transform-origin
仍按自身左上角算,得额外加
transform: translate(-50%, -50%)
IE11 兼容要手动补
-ms-
前缀,但别全加 IE11 支持
@keyframes
和
transform
,但要求前缀。不过它不支持
transform-origin: center
这种写法,必须写成
transform-origin: 50% 50%
;也不认
animation: spin 1s linear infinite
里的简写,得拆开写。 使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件 如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Andr​​oid友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Andr​​oid应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更 下载 立即学习 “ 前端免费学习笔记(深入) ”; 关键前缀只加两处:
@-ms-keyframes spin
和
-ms-animation
(不是
-ms-transform
)
border-radius: 50%
在 IE11 里对非正方形盒子会失效,务必保证宽高等值 别试图用
filter: progid:DXImageTransform.Microsoft.Matrix
模拟旋转——性能差,且和
border
圆环叠加后边缘发虚 真正麻烦的不是写法,是当 loading 出现在 modal 背景变暗层上时,IE11 下 z-index 和
transform
层叠上下文会打架,得额外给父容器加
transform: translateZ(0)
强制新建层叠上下文。

相关文章