新闻中心
如何使用CSS实现旋转环绕动画_transform rotate结合translate
答案:通过嵌套结构与CSS transform 实现环绕动画。外层容器 .orbit-container 应用旋转动画 @keyframes orbit,使子元素 .orbiter-wrapper 以中心为原点转动;.orbiter-wrapper 使用 translate(-50%, -50%) 定位到容器中心,其子元素 .orbiter 再通过 translate(100px, 0) 偏移至轨道半径位置,从而在父容器旋转时沿圆形路径运动。关键在于 transform 执行顺序为从右到左,需确保平移在旋转前生效,最终实现子元素围绕中心点持续旋转的视觉效果。

要实现一个元素围绕另一个元素旋转的环绕动画,可以结合CSS的 transform 属性中的 rotate() 和 translate() 函数来完成。关键在于合理使用嵌套结构和坐标变换顺序。
基本原理说明
旋转环绕效果的本质是:让子元素先“平移”到父容器半径位置,再通过父容器整体旋转,带动子元素做圆周运动。由于CSS中 transform 的执行顺序是从右到左,所以组合使用时要注意函数顺序。
例如:
- 使用 rotate 控制旋转角度
- 使用 translate 定位到环绕半径的位置
- 通过 @keyframes 动画不断改变 rotate 值
HTML结构示例
需要一个外层容器作为旋转中心,内部包含中心点和环绕物:
<div class="orbit-container"> <div class="center-point"></div> <div class="orbiter"></div> </div>
CSS实现代码
设置容器相对定位,环绕元素通过绝对定位+变换实现轨迹:
火龙果写作
用火龙果,轻松写作,通过校对、改写、扩展等功能实现高质量内容生产。
277
查看详情
.orbit-container {
position: relative;
width: 200px;
height: 200px;
animation: orbit 4s linear infinite;
}
<p>.center-point {
posi
tion: absolute;
top: 50%;
left: 50%;
width: 20px;
height: 20px;
background-color: #333;
border-radius: 50%;
transform: translate(-50%, -50%);
}</p><p>.orbiter {
position: absolute;
top: 50%;
left: 50%;
width: 10px;
height: 10px;
background-color: red;
border-radius: 50%;
transform: translate(100px, 0) translateY(-50%) rotate(0);
}</p><p>@keyframes orbit {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}</p>关键细节解析
注意 orbiter 的 transform 设置为:translate(100px, 0) + rotate() 实际无效,因为 rotate 是相对于自身原点。正确方式应由容器旋转带动:
- 将 translate 移出 orbiter,改为在容器上控制
- 或改用嵌套结构更清晰
推荐改进方案:
.orbit-container {
position: relative;
width: 200px;
height: 200px;
animation: orbit 4s linear infinite;
}
<p>.orbiter-wrapper {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}</p><p>.orbiter {
width: 10px;
height: 10px;
background: blue;
border-radius: 50%;
transform: translate(100px, 0); /<em> 先移动到右侧 </em>/
}</p>这样,.orbit-container 旋转时,.orbiter 就会以中心为圆心绕行。
基本上就这些,掌握 transform 执行顺序和坐标系统是实现这类动画的核心。
以上就是如何使用CSS实现旋转环绕动画_transform rotate结合translate的详细内容,更多请关注其它相关文章!
# html
# app
# ai
# css
# 江汉区seo
# 东莞快速seo诊断机构
# 网站建设网址网站制作
# 网站建设友链交换
# 推广营销名片
# 网站建设图片文案
# 营销落地页推广
# 浙江seo排名方式
# 上海seo软件公司
# 营销型网站建设模板制作
# 相关文章
# 是从
# 而在
# 选择器
# 圆周运动
# 两种类型
# 中不
# 关键在于
# 中心点
# 如何使用
# red
# 相对定位
# 绝对定位
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
c++如何实现一个简单的ECS框架_c++数据驱动设计与游戏开发
整合Supabase认证与Django模型:跨模式迁移的解决方案
深入理解Promise链:如何在catch后中断then的执行
黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】
夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案
微信网页版官方入口教程 微信网页版网页版快速登录步骤
AO3同人作品网入口 AO3搜索引擎官网永久地址
C#如何安全地从用户上传的XML文件中读取数据? 验证与清理策略
Python实时数据流中的动态最值查找策略
Spring Boot嵌入式服务器与J*a EE:功能支持深度解析
Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐
J*aScript实现单选按钮与关联输入框的联动禁用教程
实现全屏滚动与导航点:专业教程
谷歌浏览器浏览体验优化_谷歌浏览器新版直连永久可用提示
必由学在线入口 必由学网页版快速登录入口
《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!
汽车之家官方网站官网入口_汽车之家网页版直接进入
Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组
Win11怎么设置鼠标主按键_Win11鼠标左右键功能互换
利用Bokeh CustomJS动态控制DataTable列可见性
Win11截图该按哪些键 Win11截屏完整流程解析【教程】
AI泡沫首次被“刺破”:GPU十年都无法存活!
cad如何更改注释性对象的比例_cad注释性比例调整方法
AO3最新可访问网址 Archive of Our Own官方在线入口
word中如何让数字纵向排列_Word数字纵向排列方法
QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台
J*aScript中安全有效地处理localStorage字符串数据
如何在Promise链中优雅地中断后续then执行
腾讯QQ邮箱官方网站_QQ邮箱网页版在线登录
谷歌邮箱注册显示错误Gmail服务器异常与延迟处理
优化LangChain文档加载与ChromaDB集成:解决多文档处理与分块问题
taptap防沉迷怎么解除 taptap解除健康系统限制说明【2025最新】
PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程
C++如何实现异步操作_C++11使用std::future和std::async进行异步编程
抖音商城签到领现金是真的吗_抖音商城签到奖励与提现说明
处理嵌套交互式控件:前端可访问性指南
TikTok国际版网页端快速入口 TikTok全球版短视频浏览教程
Safari浏览器输入栏卡顿如何解决 Safari搜索建议与缓存清理
TikTok国际版官网直达_TikTok国际版官网直达进入在线观看
Golang切片为何属于引用类型_Golang slice底层结构与引用语义说明
一加 14R 快充无反应_一加 14R 充电优化
圆通快递查询实时追踪 圆通物流包裹状态快速查看
极兔快递快件信息查询系统 极兔快递官网运单号追踪
电脑安装程序提示“错误1722”怎么办_Windows Installer服务问题解决【教程】
C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言
QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用
12306选座如何查看座位示意图_12306座位示意图解读与使用
AO3官方镜像站点汇总 AO3同人作品网页版直达链接
深入理解Go语言中的指针类型:以*string为例
Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换


2025-11-09
浏览次数:次
返回列表
tion: absolute;
top: 50%;
left: 50%;
width: 20px;
height: 20px;
background-color: #333;
border-radius: 50%;
transform: translate(-50%, -50%);
}</p><p>.orbiter {
position: absolute;
top: 50%;
left: 50%;
width: 10px;
height: 10px;
background-color: red;
border-radius: 50%;
transform: translate(100px, 0) translateY(-50%) rotate(0);
}</p><p>@keyframes orbit {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}</p>