当前位置:首页 > CSS

css 制作下雨特效

2026-01-28 16:20:58CSS

CSS 下雨特效实现方法

通过CSS动画和伪元素可以模拟逼真的下雨效果,以下是两种常见实现方式:

线性渐变动画法

通过多个线性渐变动画元素模拟雨滴下落:

.rain {
  position: absolute;
  width: 2px;
  height: 60px;
  background: linear-gradient(to bottom, transparent, rgba(255, 255, 255, 0.8));
  animation: rain-fall 0.8s linear infinite;
}

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

伪元素随机动画

利用伪元素创建随机分布的雨滴:

css 制作下雨特效

body::before {
  content: "";
  position: fixed;
  top: -100vh;
  left: 0;
  width: 100vw;
  height: 200vh;
  background: 
    repeating-linear-gradient(
      to bottom,
      transparent 0,
      rgba(255, 255, 255, 0.1) 1px,
      transparent 1px,
      transparent 10px
    );
  animation: rain-flow 2s linear infinite;
}

@keyframes rain-flow {
  0% { transform: translateY(0); }
  100% { transform: translateY(100vh); }
}

增强效果技巧

添加雨滴涟漪效果增强真实感:

.ripple {
  position: absolute;
  width: 10px;
  height: 5px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.3);
  animation: ripple 0.5s ease-out infinite;
}

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

使用JavaScript动态生成雨滴:

css 制作下雨特效

function createRain() {
  const rainCount = 100;
  for(let i=0; i<rainCount; i++){
    const rain = document.createElement('div');
    rain.className = 'rain';
    rain.style.left = `${Math.random()*100}vw`;
    rain.style.animationDuration = `${0.5 + Math.random()}s`;
    rain.style.animationDelay = `${Math.random()}s`;
    document.body.appendChild(rain);
  }
}

性能优化建议

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

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

减少雨滴数量在移动设备上的显示:

@media (max-width: 768px) {
  .rain { display: none; }
  body::before { opacity: 0.5; }
}

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

相关文章

css网页制作

css网页制作

CSS网页制作基础 CSS(层叠样式表)用于控制网页的视觉表现,包括布局、颜色、字体等。以下是核心知识点: 选择器与样式规则 /* 标签选择器 */ p { color: #333;…

css导航制作

css导航制作

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

css制作菜单

css制作菜单

水平菜单制作 使用display: inline-block或flexbox布局创建水平菜单。设置list-style: none移除默认列表样式,添加padding和margin调整间距。 <…

css表格制作表格

css表格制作表格

CSS 表格制作方法 使用 CSS 创建表格可以通过多种方式实现,包括原生 HTML 表格元素结合 CSS 样式,或者使用纯 CSS 布局技术(如 Flexbox 或 Grid)模拟表格效果。以下是常…

css制作导航栏

css制作导航栏

水平导航栏 使用 display: inline-block 或 flexbox 创建水平导航栏。设置背景色、内边距和悬停效果增强交互性。 <nav class="horizontal-na…

css制作时钟

css制作时钟

CSS 制作时钟的方法 使用纯 CSS 和少量 JavaScript 可以制作一个动态时钟。以下是实现步骤: HTML 结构 <div class="clock"> <div…