当前位置:首页 > CSS

css制作弹跳球

2026-02-13 08:11:44CSS

使用CSS动画制作弹跳球效果

通过CSS的@keyframesanimation属性可以模拟弹跳球的物理效果,结合缓动函数(如cubic-bezier)调整动画节奏。

HTML结构

css制作弹跳球

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

CSS样式与动画

.ball {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background: linear-gradient(to bottom, #ff5e5e, #d00000);
  position: relative;
  animation: bounce 1.5s infinite cubic-bezier(0.5, 0.05, 0.8, 0.3);
}

@keyframes bounce {
  0% {
    transform: translateY(0);
    animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
  }
  50% {
    transform: translateY(-150px);
    animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
  }
  100% {
    transform: translateY(0);
    animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
  }
}

添加阴影增强真实感

通过阴影大小和模糊度的变化模拟球体与地面的接触效果:

css制作弹跳球

.ball::before {
  content: "";
  position: absolute;
  bottom: -10px;
  left: 25%;
  width: 50%;
  height: 10px;
  background: rgba(0, 0, 0, 0.2);
  border-radius: 50%;
  filter: blur(5px);
  animation: shadow 1.5s infinite;
}

@keyframes shadow {
  0%, 100% {
    transform: scaleX(1.5);
    opacity: 0.3;
  }
  50% {
    transform: scaleX(0.8);
    opacity: 0.1;
  }
}

弹性变形效果

在球体接触地面时添加轻微的水平拉伸变形:

@keyframes bounce {
  /* 原有代码... */
  15%, 85% {
    transform: translateY(0) scaleX(1.05) scaleY(0.95);
  }
}

性能优化建议

使用will-change属性提前告知浏览器需要优化的属性:

.ball {
  will-change: transform, filter;
}

完整代码示例

<!DOCTYPE html>
<html>
<head>
  <style>
    body {
      display: flex;
      justify-content: center;
      align-items: center;
      height: 100vh;
      background: #f0f0f0;
    }

    .ball {
      width: 50px;
      height: 50px;
      border-radius: 50%;
      background: linear-gradient(to bottom, #ff5e5e, #d00000);
      position: relative;
      animation: bounce 1.5s infinite cubic-bezier(0.5, 0.05, 0.8, 0.3);
      will-change: transform;
    }

    @keyframes bounce {
      0% {
        transform: translateY(0);
        animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
      }
      15%, 85% {
        transform: translateY(0) scaleX(1.05) scaleY(0.95);
      }
      50% {
        transform: translateY(-150px);
        animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
      }
      100% {
        transform: translateY(0);
        animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
      }
    }

    .ball::before {
      content: "";
      position: absolute;
      bottom: -10px;
      left: 25%;
      width: 50%;
      height: 10px;
      background: rgba(0, 0, 0, 0.2);
      border-radius: 50%;
      filter: blur(5px);
      animation: shadow 1.5s infinite;
    }

    @keyframes shadow {
      0%, 100% {
        transform: scaleX(1.5);
        opacity: 0.3;
      }
      50% {
        transform: scaleX(0.8);
        opacity: 0.1;
      }
    }
  </style>
</head>
<body>
  <div class="ball"></div>
</body>
</html>

标签: css
分享给朋友:

相关文章

css制作下拉导航条

css制作下拉导航条

使用纯CSS制作下拉导航条 HTML结构部分需要包含导航主菜单和子菜单项,通常使用嵌套的无序列表(<ul>和<li>)实现: <nav class="dropdown-…

纯css制作下拉菜单

纯css制作下拉菜单

纯CSS下拉菜单实现方法 通过CSS的:hover伪类和display属性可以实现纯CSS下拉菜单,无需JavaScript。以下是具体实现方式: HTML结构示例: <nav class=…

min.css制作

min.css制作

使用 min.css 制作轻量级样式 min.css 是一个极简的 CSS 框架,专注于轻量化和快速加载。以下是如何使用 min.css 进行开发的步骤。 引入 min.css 通过 CDN 直接引…

css制作卷边效果

css制作卷边效果

使用伪元素和渐变实现卷边效果 通过CSS伪元素和线性渐变可以模拟纸张卷边的视觉效果。这种方法不需要额外元素,仅通过::before或::after伪元素实现。 .element { positi…

制作css选择器

制作css选择器

CSS选择器基础语法 CSS选择器用于定位HTML文档中的元素,以便为其应用样式。常见的基础选择器包括: 元素选择器:直接使用HTML标签名(如p、div) 类选择器:以.开头(如.header)…

css表头制作

css表头制作

CSS 表头制作方法 固定表头(滚动时保持可见) 使用 position: sticky 属性可以创建滚动时固定的表头。确保父容器有明确的高度和 overflow 属性。 .table-conta…