当前位置:首页 > 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
分享给朋友:

相关文章

vue实现特效轮播

vue实现特效轮播

Vue实现特效轮播的方法 使用Vue实现轮播效果可以通过多种方式完成,以下是几种常见的实现方法。 使用Vue和CSS动画 通过Vue的动态绑定和CSS动画结合,可以实现平滑的轮播效果。 &…

css菜单制作

css菜单制作

基础水平菜单制作 使用无序列表<ul>和<li>标签构建结构,CSS设置横向排列: <ul class="horizontal-menu"> <li&g…

css精灵图制作

css精灵图制作

CSS 精灵图制作方法 准备工具 图像编辑软件(如 Photoshop、GIMP 或在线工具) CSS 代码编辑器 步骤 收集图像资源 将需要合并的小图标或图片整理到一个文件夹中,确保这些图片尺寸…

css怎么制作三角形

css怎么制作三角形

使用边框制作三角形 通过设置元素的边框宽度和颜色,可以创建不同方向的三角形。将元素的宽度和高度设为0,利用边框的透明属性实现。 .triangle-up { width: 0; height…

css 制作字体

css 制作字体

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

css制作扇形图

css制作扇形图

使用CSS制作扇形图 方法一:使用clip-path和transform 通过CSS的clip-path和transform属性可以快速实现扇形效果。定义一个圆形元素,然后裁剪出扇形部分。 .fan…