当前位置:首页 > CSS

css制作弹跳球

2026-02-13 08:11:44CSS

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

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

HTML结构

<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);
  }
}

添加阴影增强真实感

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

.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制作详情页

CSS制作详情页的关键步骤 布局规划 确定详情页的整体布局结构,通常包括头部、商品展示区、参数区、评价区等模块。使用Flexbox或Grid布局实现响应式设计,确保在不同设备上正常显示。 样式设计…

css简历制作

css简历制作

使用CSS制作简历的基本方法 选择简洁的布局结构,单列或双列布局适合大多数简历。使用display: flex或display: grid实现响应式设计,确保在不同设备上显示良好。 字体选择上,标题…

css 制作字体

css 制作字体

使用CSS自定义字体 在CSS中,可以通过@font-face规则引入自定义字体,并使用font-family属性应用这些字体。 @font-face { font-family: 'MyCu…

css制作彩虹

css制作彩虹

使用线性渐变创建彩虹效果 通过CSS的linear-gradient属性可以轻松实现彩虹效果。以下是一个基础的彩虹样式代码: .rainbow { width: 100%; height:…

制作css选择器

制作css选择器

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

css制作靶子

css制作靶子

CSS 制作靶子 使用 CSS 可以轻松创建一个靶子效果,主要通过嵌套的圆形元素和背景色实现。以下是实现方法: HTML 结构 <div class="target"> <…