当前位置:首页 > 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; }
}

多层雨幕增强立体感

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

css 制作下雨特效

.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 初始化:

css 制作下雨特效

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

性能优化建议

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

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

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

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

响应式调整

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

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

window.addEventListener('resize', adjustRainDensity);

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

相关文章

css div 制作导航菜单

css div 制作导航菜单

基本导航菜单结构 使用HTML创建一个简单的导航菜单结构,通常使用<ul>和li>列表实现。每个菜单项用<a>标签包裹以实现链接功能。 <div class="n…

css 制作表单

css 制作表单

使用 CSS 制作表单 表单是网页交互的重要组成部分,通过 CSS 可以美化表单元素,提升用户体验。以下是常见的表单样式设计方法。 基础表单结构 HTML 表单通常包含输入框、标签、按钮等元素。以下…

旋转相册制作css

旋转相册制作css

旋转相册制作CSS 旋转相册通常通过CSS动画和3D变换实现,以下是一个完整的实现方法: 基础HTML结构 <div class="photo-album"> <div c…

css制作滑动页面

css制作滑动页面

使用CSS实现滑动页面 通过CSS可以实现多种滑动页面效果,包括横向滑动、纵向滑动以及视差滚动等。以下是几种常见的实现方法: 横向滑动效果 横向滑动通常用于展示一组卡片或图片,可以通过CSS的ove…

怎么制作css文档

怎么制作css文档

创建CSS文档的基本步骤 新建一个纯文本文件,将文件后缀名改为.css,例如styles.css。使用代码编辑器(如VS Code、Sublime Text等)打开文件,开始编写CSS规则。 编写C…

css下拉框制作

css下拉框制作

使用原生HTML和CSS制作下拉框 HTML的<select>元素结合CSS可以创建基础下拉框: <select class="custom-dropdown"> <…