当前位置:首页 > CSS

css制作小球动画

2026-04-01 19:41:03CSS

CSS 制作小球动画的方法

基础弹跳动画

使用 @keyframes 定义弹跳动画,结合 transformanimation 属性实现垂直弹跳效果:

.ball {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background: linear-gradient(to right, #ff758c, #ff7eb3);
  animation: bounce 1s infinite alternate;
}

@keyframes bounce {
  from { transform: translateY(0); }
  to { transform: translateY(-100px); }
}

物理感弹跳

通过多关键帧模拟真实弹跳轨迹,加入缓动函数增强物理感:

css制作小球动画

@keyframes physics-bounce {
  0% { transform: translateY(0); }
  30% { transform: translateY(-100px); }
  50% { transform: translateY(0); }
  65% { transform: translateY(-50px); }
  80% { transform: translateY(0); }
  90% { transform: translateY(-20px); }
  100% { transform: translateY(0); }
}

.ball {
  animation: physics-bounce 1.5s ease-in-out infinite;
}

3D 空间弹跳

添加 perspectiverotateX 创造立体感:

.container {
  perspective: 500px;
}

.ball {
  transform-style: preserve-3d;
  animation: 
    bounce 1s infinite alternate,
    rotate 2s linear infinite;
}

@keyframes rotate {
  from { transform: rotateX(0); }
  to { transform: rotateX(360deg); }
}

光影变化增强

配合 box-shadowopacity 实现光影变化:

css制作小球动画

@keyframes glow {
  0% { 
    box-shadow: 0 0 10px #ff758c;
    opacity: 0.9;
  }
  100% { 
    box-shadow: 0 0 30px #ff7eb3;
    opacity: 1;
  }
}

.ball {
  animation: glow 1s ease-in-out infinite alternate;
}

路径动画

使用 offset-path 让小球沿自定义路径运动(需浏览器支持):

.ball {
  offset-path: path('M 0 0 Q 100 100 200 0');
  animation: move 3s infinite;
}

@keyframes move {
  100% { 
    offset-distance: 100%;
  }
}

组合动画示例

整合多种效果的完整示例:

.ball {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  background: radial-gradient(circle at 30% 30%, #fff, #ff7eb3);
  box-shadow: 0 0 20px rgba(255,117,140,0.6);

  animation: 
    combo-bounce 2s cubic-bezier(0.5, 0.05, 0.5, 1) infinite,
    glow-pulse 1.5s ease-in-out infinite alternate;
}

@keyframes combo-bounce {
  0%, 100% { transform: translateY(0) scale(1, 1); }
  30% { transform: translateY(-150px) scale(1.1, 0.9); }
  60% { transform: translateY(0) scale(0.95, 1.05); }
}

@keyframes glow-pulse {
  from { filter: brightness(90%); }
  to { filter: brightness(110%); }
}

性能优化建议

  • 优先使用 transformopacity 属性触发硬件加速
  • 减少动画帧数(建议30fps以上即可)
  • 对移动设备使用 will-change: transform; 预提示浏览器
  • 避免同时激活过多动画元素

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

相关文章

vue的动画实现

vue的动画实现

Vue 动画实现方式 Vue 提供了多种方式实现动画效果,主要包括内置组件和第三方库。 使用 <transition> 和 <transition-group> Vue 内置…

vue加载动画实现

vue加载动画实现

Vue 加载动画实现方法 使用 CSS 动画或过渡 在 Vue 组件中可以直接通过 CSS 实现加载动画效果。定义一个简单的旋转动画: .loading-spinner { width: 40p…

vue动画怎么实现

vue动画怎么实现

Vue动画的实现方式 Vue提供了多种方式来实现动画效果,包括内置的过渡和动画系统,以及第三方动画库的集成。以下是几种常见的实现方法: 使用Vue的过渡系统 Vue的<transition&…

vue2.0 实现动画

vue2.0 实现动画

Vue 2.0 实现动画的方法 Vue 2.0 提供了多种方式实现动画效果,包括内置的过渡系统、第三方动画库以及 CSS 动画。以下是几种常见的实现方式: 使用 Vue 内置过渡系统 Vue 提供了…

vue实现资源加载动画

vue实现资源加载动画

实现资源加载动画的方法 在Vue中实现资源加载动画可以通过多种方式完成,以下是几种常见的方法: 使用CSS动画和Vue条件渲染 通过Vue的v-if或v-show指令控制加载动画的显示与隐藏。结合…

vue实现左右切换动画

vue实现左右切换动画

实现左右切换动画的方法 在Vue中实现左右切换动画可以通过Vue的过渡系统结合CSS动画完成。以下是具体实现方式: 使用Vue过渡组件 Vue提供了<transition>和<tr…