0

0

html如何转圈_html实现加载转圈动画的CSS技巧【详解】

蓮花仙者

蓮花仙者

发布时间:2026-01-03 19:11:52

|

559人浏览过

|

来源于php中文网

原创

最简纯CSS转圈动画:用border构造单色圆环+rotate(360deg)无限旋转,配合border-radius:50%、transparent边框及linear缓动;Safari需will-change:transform或translateZ(0)启用硬件加速。

html如何转圈_html实现加载转圈动画的css技巧【详解】

border + animation 实现最简转圈动画

纯 CSS 实现加载转圈,核心是利用 border 的边框绘制和 transform: rotate() 配合 @keyframes。不需要 JS,不依赖外部资源,兼容性好(IE10+)。

常见错误是直接对元素整体旋转,导致内容也跟着转;正确做法是只旋转一个无内容的伪元素或空

,并用 border 构造圆环。
  • 必须设置 border-radius: 50% 让元素呈圆形
  • 四边 border 宽度一致,但只留一边有颜色(如 border-top: 4px solid #007bff),其余设为透明(transparent
  • 动画需用 transform: rotate(360deg),不能用 rotateZ 或其他变体,否则部分旧版 Safari 不识别
  • 推荐加 animation-timing-function: linear,避免默认 ease 导致转速不均
.spinner {
  width: 20px;
  height: 20px;
  border: 4px solid transparent;
  border-top-color: #007bff;
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

@keyframes spin { to { transform: rotate(360deg); } }

解决 Safari 中 transform 动画卡顿问题

Safari(尤其 iOS 14–15)对纯 transformrotate 动画可能掉帧,尤其在低功耗模式下。根本原因是浏览器未将其提升为独立图层。

强制启用硬件加速可缓解:给转圈元素添加 will-change: transform 或补一个极小的 translateZ(0)

立即学习前端免费学习笔记(深入)”;

  • will-change: transform 最直接,但不要滥用——仅用于持续动画的元素,否则影响内存
  • 若需兼容 iOS 12–13,用 transform: rotate(0deg) translateZ(0) 开启 GPU 渲染
  • 避免同时对父容器设置 overflow: hidden 和子元素旋转,Safari 可能截断动画轨迹
.spinner {
  will-change: transform;
  /* 或者 */
  /* transform: rotate(0deg) translateZ(0); */
}

响应式转圈大小适配不同设备

固定像素(如 20px)在高 DPI 屏幕上显得过小,在小屏手机上又可能遮挡内容。应优先使用相对单位,并配合 min-width/max-width 控制边界。

维普科创助手
维普科创助手

AI驱动的一站式科研资源服务平台

下载
  • emrem 替代 px,让尺寸随父文本缩放(例如按钮内的加载图标)
  • clamp() 设置弹性范围:width: clamp(16px, 2.5vw, 32px),兼顾小屏、桌面、大屏
  • 注意 border-width 也要同比例缩放,否则圆环粗细会失衡
  • 如果嵌入文字行内,加 vertical-align: middle 避免基线错位
.spinner-inline {
  width: clamp(12px, 1.8vw, 24px);
  height: clamp(12px, 1.8vw, 24px);
  border-width: clamp(2px, 0.9vw, 4px);
  vertical-align: middle;
}

clip-path 做更精细的转圈控制(如缺口圆环)

默认 border 转圈是实心圆弧,但有些设计需要“缺口”或“断开”的环形(比如进度感更强的 loading)。这时 clip-path 比改 SVG 更轻量。

原理是先画一个完整圆环,再用 clip-path: polygon() 切掉一小段,再旋转它——视觉上就像一段弧在转动。

  • 缺口角度建议控制在 15°–30°,太小难察觉,太大像卡住
  • 必须配合 transform-origin: center,否则裁剪后旋转中心偏移
  • Firefox 对 clip-pathpolygon 支持稳定,但 IE 完全不支持,需降级回 border 方案
.spinner-gap {
  width: 32px;
  height: 32px;
  border: 4px solid #007bff;
  border-radius: 50%;
  animation: spin-gap 1.2s linear infinite;
  transform-origin: center;
  clip-path: polygon(
    0% 0%, 100% 0%, 100% 100%, 0% 100%,
    0% 50%, 15% 50%, 15% 45%, 0% 45%
  );
}

@keyframes spin-gap { to { transform: rotate(360deg); } }

实际项目中,最容易被忽略的是动画触发时机与 DOM 生命周期的配合——比如组件挂载后才开始动画,或请求结束时及时移除 class。CSS 动画本身没状态管理,这部分得靠 JS 控制 class 切换,别指望纯 CSS 自动启停。

相关专题

更多
css
css

css是层叠样式表,用来表现HTML或XML等文件样式的计算机语言,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

505

2023.06.15

css居中
css居中

css居中:1、通过“margin: 0 auto; text-align: center”实现水平居中;2、通过“display:flex”实现水平居中;3、通过“display:table-cell”和“margin-left”实现居中。本专题为大家提供css居中的相关的文章、下载、课程内容,供大家免费下载体验。

261

2023.07.27

css如何插入图片
css如何插入图片

cssCSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体、颜色、布局、大小、背景、边框等方面,使得网页的外观更加美观和易于阅读。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

739

2023.07.28

css超出显示...
css超出显示...

在CSS中,当文本内容超出容器的宽度或高度时,可以使用省略号来表示被隐藏的文本内容。本专题为大家提供css超出显示...的相关文章,相关教程,供大家免费体验。

536

2023.08.01

css字体颜色
css字体颜色

CSS中,字体颜色可以通过属性color来设置,用于控制文本的前景色,字体颜色在网页设计中起到很重要的作用,具有以下表现作用:1、提升可读性;2、强调重点信息;3、营造氛围和美感;4、用于呈现品牌标识或与品牌形象相符的风格。

752

2023.08.10

什么是css
什么是css

CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于描述网页(或其他基于 XML 的文档)样式与布局的标记语言,CSS的作用和意义如下:1、分离样式和内容;2、页面加载速度优化;3、实现响应式设计;4、确保整个网站的风格和样式保持统一。

597

2023.08.10

css三角形怎么写
css三角形怎么写

CSS可以通过多种方式实现三角形形状,本专题为大家提供css三角形怎么写的相关教程,大家可以免费体验。

558

2023.08.21

css设置文字颜色
css设置文字颜色

CSS(层叠样式表)可以用于设置文字颜色,这样做有以下好处和优势:1、增加网页的可视化效果;2、突出显示某些重要的信息或关键字;3、增强品牌识别度;4、提高网页的可访问性;5、引起不同的情感共鸣。

388

2023.08.22

python设置中文版教程合集
python设置中文版教程合集

本专题整合了python改成中文版相关教程,阅读专题下面的文章了解更多详细内容。

1

2026.01.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.7万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.8万人学习

CSS教程
CSS教程

共754课时 | 17.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号