当前位置:首页 > CSS

css 制作下雨特效

2026-02-13 10:39:31CSS

CSS 制作下雨特效

使用关键帧动画和伪元素

通过 @keyframes::before/::after 伪元素模拟雨滴下落效果:

.raindrop {
  position: absolute;
  width: 2px;
  height: 10px;
  background: linear-gradient(to bottom, transparent, #00b4ff);
  border-radius: 0 0 5px 5px;
  animation: rain 1s linear infinite;
}

@keyframes rain {
  0% { transform: translateY(-100px) rotate(15deg); opacity: 1; }
  100% { transform: translateY(100vh) rotate(15deg); opacity: 0.2; }
}

随机生成雨滴位置

通过 JavaScript 动态创建雨滴元素并设置随机属性:

function createRain() {
  const rainContainer = document.querySelector('.rain-container');
  const dropCount = 100;

  for (let i = 0; i < dropCount; i++) {
    const drop = document.createElement('div');
    drop.className = 'raindrop';
    drop.style.left = `${Math.random() * 100}vw`;
    drop.style.animationDuration = `${0.5 + Math.random() * 1.5}s`;
    drop.style.animationDelay = `${Math.random() * 2}s`;
    rainContainer.appendChild(drop);
  }
}

添加雨滴溅起效果

使用伪元素模拟雨滴落地时的溅射效果:

.raindrop::after {
  content: '';
  position: absolute;
  bottom: 0;
  width: 4px;
  height: 1px;
  background: rgba(255, 255, 255, 0.4);
  border-radius: 50%;
  animation: splash 0.5s ease-out infinite;
}

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

多层雨幕增强立体感

创建不同速度的多层雨幕模拟景深效果:

.raindrop.far {
  height: 6px;
  opacity: 0.3;
  animation-duration: 2s;
}

.raindrop.near {
  height: 12px;
  opacity: 0.6;
  animation-duration: 0.8s;
}

背景模糊和色调调整

添加滤镜增强雨天氛围:

.rain-container {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  pointer-events: none;
  filter: blur(1px) brightness(0.8);
  z-index: 100;
}

完整实现示例

HTML 结构:

<div class="rain-container"></div>

JavaScript 初始化:

window.addEventListener('DOMContentLoaded', () => {
  createRain();
});

性能优化建议

使用 will-change 属性提升动画性能:

.raindrop {
  will-change: transform, opacity;
}

限制雨滴数量避免性能问题:

const dropCount = Math.min(150, window.innerWidth / 3);

响应式调整

根据窗口大小动态调整雨滴密度:

css 制作下雨特效

function adjustRainDensity() {
  const container = document.querySelector('.rain-container');
  container.innerHTML = '';
  createRain();
}

window.addEventListener('resize', adjustRainDensity);

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

相关文章

制作css

制作css

CSS基础语法 CSS规则由选择器和声明块组成。选择器指向需要设置样式的HTML元素,声明块包含一个或多个用分号分隔的声明。每个声明由属性和值组成,用冒号分隔。 选择器 { 属性: 值; 属…

css导航条制作

css导航条制作

基础导航条制作 使用HTML的无序列表<ul>和CSS的display: flex属性可以快速创建横向导航条。HTML结构通常包含导航链接列表,CSS负责样式和布局。 <nav&g…

css制作详情页

css制作详情页

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

css 制作报表

css 制作报表

CSS 制作报表的方法 使用 CSS 制作报表主要涉及表格样式的设计、布局优化以及响应式处理。以下是几种常见的方法和技巧: 基础表格样式 通过 CSS 可以增强 HTML 表格的视觉效果,使其更符合…

css制作半圆

css制作半圆

使用 border-radius 制作半圆 通过设置 border-radius 属性,可以将矩形的边角弯曲成圆弧形状。制作半圆的关键是将宽度和高度设置为 2:1 的比例,并只对两个角应用圆角。 .…

css与html制作

css与html制作

CSS与HTML制作基础 CSS与HTML是构建网页的核心技术,HTML负责结构,CSS负责样式。以下是关键要点: HTML基础结构 <!DOCTYPE html> <html&…