当前位置:首页 > CSS

css制作小球动画

2026-03-11 23:32:10CSS

使用 CSS 制作小球动画

关键帧动画(@keyframes)

通过 @keyframes 定义动画的关键帧,控制小球的位置、颜色或大小变化:

@keyframes bounce {
  0% { transform: translateY(0); }
  50% { transform: translateY(-100px); }
  100% { transform: translateY(0); }
}

小球基础样式

创建圆形小球并应用动画:

.ball {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: #ff6b6b;
  animation: bounce 2s infinite ease-in-out;
}

添加物理效果

通过调整 animation-timing-function 模拟弹跳的物理效果:

.ball {
  animation-timing-function: cubic-bezier(0.5, 0.05, 0.1, 0.3);
}

多方向运动

结合 X 轴和 Y 轴移动实现斜向弹跳:

@keyframes move {
  0% { transform: translate(0, 0); }
  50% { transform: translate(100px, -100px); }
  100% { transform: translate(200px, 0); }
}

阴影增强立体感

为小球添加动态阴影效果:

@keyframes shadow {
  0% { box-shadow: 0 0 10px rgba(0,0,0,0.2); }
  50% { box-shadow: 0 20px 15px rgba(0,0,0,0.1); }
  100% { box-shadow: 0 0 10px rgba(0,0,0,0.2); }
}

代码示例

完整实现弹跳小球的 HTML 和 CSS:

css制作小球动画

<div class="ball"></div>

<style>
  .ball {
    width: 50px;
    height: 50px;
    border-radius: 50%;
    background: linear-gradient(to bottom, #ff8a00, #ff4d00);
    animation: 
      bounce 1.5s infinite cubic-bezier(0.28, 0.84, 0.42, 1),
      shadow 1.5s infinite ease-out;
  }

  @keyframes bounce {
    0% { transform: scale(1) translateY(0); }
    20% { transform: scale(0.9, 1.1) translateY(-80px); }
    50% { transform: scale(1.1, 0.9) translateY(10px); }
    100% { transform: scale(1) translateY(0); }
  }

  @keyframes shadow {
    0% { box-shadow: 0 0 15px rgba(0,0,0,0.1); }
    50% { box-shadow: 0 30px 20px rgba(0,0,0,0.05); }
    100% { box-shadow: 0 0 15px rgba(0,0,0,0.1); }
  }
</style>

性能优化建议

  • 优先使用 transformopacity 属性触发硬件加速
  • 避免在动画中频繁修改 width/height,改用 scale
  • 对静止元素使用 will-change: transform 提示浏览器优化

标签: 小球动画
分享给朋友:

相关文章

vue加载动画实现

vue加载动画实现

Vue 加载动画的实现方法 在 Vue 中实现加载动画可以通过多种方式完成,以下是一些常见的方法: 使用 CSS 动画 通过 CSS 定义动画效果,结合 Vue 的动态类绑定或条件渲染控制动画的显示…

vue怎么实现动画

vue怎么实现动画

Vue 动画实现方法 Vue 提供了多种方式实现动画效果,主要依赖内置的 <transition> 和 <transition-group> 组件,结合 CSS 或 JavaS…

vue实现路由动画

vue实现路由动画

路由动画的实现方法 在Vue中实现路由动画通常结合<transition>组件和Vue Router的导航守卫。以下是几种常见实现方式: 基础过渡动画 <template>…

vue实现停止动画

vue实现停止动画

停止动画的方法 在Vue中停止动画可以通过多种方式实现,具体取决于动画的实现方式(CSS动画、JavaScript动画或第三方库如GSAP)。 使用CSS动画 通过动态绑定类名或样式来控制动画的播放…

vue实现翻页动画

vue实现翻页动画

实现翻页动画的基本思路 在Vue中实现翻页动画通常需要结合CSS过渡或动画效果。可以通过Vue的过渡组件<transition>或<transition-group>来实现页面…

vue实现动画插件

vue实现动画插件

Vue 动画插件实现方案 Vue 提供了多种实现动画的方式,可以通过内置的 <transition> 组件或第三方插件来实现复杂的动画效果。 使用 Vue 内置 <transiti…