[CSS] CSS 实现小球环绕效果

该文章展示了一个使用CSS编写的动画效果,包括行星的旋转以及小球的自转,通过定义关键帧动画`planet-rotate`和`self-rotate`,实现了元素的周期性变换,创建了一个动态的视觉展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果演示

视频未审核通过, 后面在上传

代码

CSS

  .container {
      width: 10rem;
      height: 10rem;
  }
  .planet {
      width: 5rem;
      height: 5rem;
      border: 2px solid rgb(65, 127, 235);
      border-radius: 50%;
      position: absolute;
      left: -0.1rem;
      top: -0.3rem;
  }
  .ball {
      width: 0.5rem;
      height:  0.5rem;
      background-color: #008c8c;
      border-radius: 50%;
      position: absolute;
      left: 0.5rem;
      top: 0.5rem;
  }
  @keyframes planet-rotate {  0% {    transform:  scaleY(0.5) rotate(0);  }  100% {    transform:  scaleY(0.5) rotate(360deg);  }}
  
  @keyframes self-rotate {  0% {    transform: rotate(0) scaleY(2);  }  100% {    transform: rotate(-360deg) scaleY(2);  }}
  
  .planet {  
      animation: planet-rotate 10s linear infinite;
  }
  
  .ball { 
      animation: self-rotate 10s linear infinite;
  }

HTML

  <div class="container">
       <div class="planet">
           <div class="ball"></div>
       </div>
  </div>
### 使用 CSS 实现元素按圆形路径无限循环旋转动画 为了创建一个类似于星球围绕轨道旋转的效果,可以利用 `@keyframes` 动画以及一些特定的 CSS 属性组合来完成这一效果[^1]。 #### 定义关键帧动画 首先定义一组关键帧,在这些关键帧中指定对象在整个周期内的位置变化: ```css @keyframes orbit { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } ``` 此段代码表示目标元素将从初始角度 (0度) 开始顺时针方向自转至结束角度 (360度),形成完整的圆周运动。 #### 设置容器样式 接着设置父级容器 `.orbit-container` 的尺寸和定位方式以便于子元素在其内部进行环绕移动: ```css .orbit-container { position: relative; width: 200px; /* 可根据实际需求调整 */ height: 200px; /* 同上 */ margin: auto; } ``` 这里设置了相对定位并给予固定大小的空间给到即将被绕行的对象提供足够的活动范围;同时通过自动外边距让整个结构居中显示。 #### 创建行星及其轨迹 对于要沿着设定好的圆形路线做持续转动的小球(即“行星”),除了基本外观之外还需要特别注意其绝对布局特性: ```css .planet { position: absolute; top: 50%; left: 50%; width: 20px; height: 20px; background-color: blue; border-radius: 50%; animation-name: orbit; animation-duration: 4s; animation-timing-function: linear; animation-iteration-count: infinite; } /* 将行星偏移至距离中心一定半径处 */ .planet::before { content: &#39;&#39;; display: block; padding-top: 87.5%; /* 控制离心率 */ } ``` 上述代码片段中的 `.planet` 类用于描述单个天体的基本形态——蓝色填充、正方形变圆角矩形再加适当宽高比例使之成为近似完美的圆形。更重要的是为其指定了名为 "orbit" 的 @keyframes 动作序列,并设定了执行时间 (`animation-duration`)、速度曲线(`animation-timing-function`) 和重复次数 (`animation-iteration-count`) 参数以确保流畅且无休止地运行下去。另外还借助伪类 ::before 来控制物体相对于原点的位置关系从而模拟出真实的公转现象[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值