当前位置:首页 > CSS

css 制作下雨特效

2026-04-01 19:35:56CSS

使用 CSS 制作下雨特效

通过 CSS 动画和伪元素可以模拟下雨效果。以下是实现方法:

创建雨滴元素

定义雨滴的基本样式,使用伪元素 ::before::after 生成雨滴形状:

.raindrop {
  position: absolute;
  width: 2px;
  height: 15px;
  background: linear-gradient(to bottom, transparent, #a0d8f3);
  border-radius: 0 0 5px 5px;
}

添加下落动画

使用 @keyframes 定义雨滴从顶部到底部的动画:

@keyframes fall {
  from { transform: translateY(-100px) rotate(15deg); }
  to { transform: translateY(100vh) rotate(15deg); }
}

随机化雨滴位置和延迟

通过 JavaScript 动态生成雨滴并设置随机属性:

const container = document.querySelector('.rain-container');
for (let i = 0; i < 50; i++) {
  const drop = document.createElement('div');
  drop.className = 'raindrop';
  drop.style.left = `${Math.random() * 100}vw`;
  drop.style.animation = `fall ${0.5 + Math.random() * 1}s linear infinite`;
  drop.style.animationDelay = `${Math.random() * 2}s`;
  container.appendChild(drop);
}

添加涟漪效果(可选)

当雨滴"落地"时创建涟漪动画:

css 制作下雨特效

@keyframes ripple {
  0% { transform: scale(0); opacity: 1; }
  100% { transform: scale(3); opacity: 0; }
}

.ripple {
  position: absolute;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: rgba(160, 216, 243, 0.5);
  animation: ripple 0.5s linear forwards;
}

完整示例代码

<!DOCTYPE html>
<html>
<head>
<style>
  body {
    margin: 0;
    height: 100vh;
    overflow: hidden;
    background: #222;
  }

  .rain-container {
    position: relative;
    width: 100%;
    height: 100%;
  }

  .raindrop {
    position: absolute;
    width: 2px;
    height: 15px;
    background: linear-gradient(to bottom, transparent, #a0d8f3);
    border-radius: 0 0 5px 5px;
  }

  @keyframes fall {
    from { transform: translateY(-100px) rotate(15deg); }
    to { transform: translateY(100vh) rotate(15deg); }
  }

  @keyframes ripple {
    0% { transform: scale(0); opacity: 1; }
    100% { transform: scale(3); opacity: 0; }
  }

  .ripple {
    position: absolute;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: rgba(160, 216, 243, 0.5);
    animation: ripple 0.5s linear forwards;
  }
</style>
</head>
<body>
  <div class="rain-container"></div>

  <script>
    const container = document.querySelector('.rain-container');

    // 创建雨滴
    for (let i = 0; i < 80; i++) {
      const drop = document.createElement('div');
      drop.className = 'raindrop';
      drop.style.left = `${Math.random() * 100}vw`;
      drop.style.animation = `fall ${0.5 + Math.random() * 1}s linear infinite`;
      drop.style.animationDelay = `${Math.random() * 2}s`;
      container.appendChild(drop);

      // 创建涟漪效果
      setTimeout(() => {
        setInterval(() => {
          const ripple = document.createElement('div');
          ripple.className = 'ripple';
          ripple.style.left = drop.style.left;
          ripple.style.bottom = '0';
          container.appendChild(ripple);

          // 移除涟漪元素
          setTimeout(() => {
            ripple.remove();
          }, 500);
        }, 1000 + Math.random() * 1000);
      }, Math.random() * 2000);
    }
  </script>
</body>
</html>

增强效果的技巧

调整雨滴数量可以改变降雨强度,增加更多雨滴会使效果更密集。修改动画时间和延迟可以创建不同速度的雨滴,模拟真实降雨的不规则性。添加背景模糊或渐变可以增强场景深度感。

标签: 特效css
分享给朋友:

相关文章

css导航制作

css导航制作

基础导航栏制作 使用HTML的无序列表 <ul> 和 <li> 构建导航结构,CSS清除默认样式并横向排列: <nav> <ul class="navb…

css如何制作响应网页

css如何制作响应网页

响应式网页设计基础 使用CSS制作响应式网页的核心是通过媒体查询(Media Queries)和弹性布局(Flexbox/Grid)实现。媒体查询允许根据设备特性(如屏幕宽度)应用不同的样式规则。…

前端css制作

前端css制作

CSS 基础语法与结构 CSS(层叠样式表)通过选择器、属性和值定义样式。基本语法为: 选择器 { 属性: 值; } 例如: h1 { color: blue; font-size:…

css制作菜单

css制作菜单

CSS 制作菜单的方法 使用 CSS 可以制作多种风格的菜单,包括水平菜单、垂直菜单、下拉菜单等。以下是几种常见的实现方式。 水平菜单 水平菜单通常用于导航栏,可以通过 display: inlin…

css制作按钮

css制作按钮

基础按钮样式 使用CSS创建一个基础按钮需要定义display、padding、background-color和border等属性。以下是一个简单的示例: .button { display:…

css div 制作导航菜单

css div 制作导航菜单

使用 CSS 和 Div 制作导航菜单 导航菜单是网站的重要组成部分,以下是通过 CSS 和 div 元素制作导航菜单的方法。 基本 HTML 结构 创建一个简单的 div 结构作为导航菜单的基础:…