当前位置:首页 > CSS

css制作波纹

2026-02-12 22:53:49CSS

使用 CSS 动画制作波纹效果

通过 CSS 动画和 transform 属性可以实现简单的波纹扩散效果。以下是一个基础实现方法:

<div class="ripple-container">
  <div class="ripple"></div>
</div>
.ripple-container {
  position: relative;
  width: 200px;
  height: 200px;
  overflow: hidden;
}

.ripple {
  position: absolute;
  width: 100%;
  height: 100%;
  background: rgba(0, 150, 255, 0.5);
  border-radius: 50%;
  transform: scale(0);
  animation: ripple-animation 1.5s ease-out;
}

@keyframes ripple-animation {
  to {
    transform: scale(2);
    opacity: 0;
  }
}

通过伪元素优化实现

利用伪元素可以减少 DOM 元素数量:

css制作波纹

.ripple-button {
  position: relative;
  overflow: hidden;
}

.ripple-button::after {
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background: radial-gradient(circle, rgba(255,255,255,0.8) 10%, transparent 10.1%);
  background-size: 10000% 10000%;
  opacity: 0;
  transition: transform 0.5s, opacity 1s;
}

.ripple-button:active::after {
  background-size: 0 0;
  opacity: 0.4;
  transition: 0s;
  transform: scale(10);
}

JavaScript 交互增强

结合 JavaScript 实现点击触发的动态波纹:

css制作波纹

document.querySelector('.ripple-button').addEventListener('click', function(e) {
  const ripple = document.createElement('span');
  ripple.classList.add('ripple-effect');

  const rect = this.getBoundingClientRect();
  const size = Math.max(rect.width, rect.height);

  ripple.style.width = ripple.style.height = `${size}px`;
  ripple.style.left = `${e.clientX - rect.left - size/2}px`;
  ripple.style.top = `${e.clientY - rect.top - size/2}px`;

  this.appendChild(ripple);

  setTimeout(() => ripple.remove(), 600);
});

配套 CSS:

.ripple-button {
  position: relative;
  overflow: hidden;
}

.ripple-effect {
  position: absolute;
  border-radius: 50%;
  background-color: rgba(255, 255, 255, 0.7);
  transform: scale(0);
  animation: ripple 0.6s linear;
}

@keyframes ripple {
  to {
    transform: scale(4);
    opacity: 0;
  }
}

使用 CSS 变量控制参数

通过 CSS 变量实现可配置的波纹效果:

:root {
  --ripple-color: rgba(255, 255, 255, 0.6);
  --ripple-duration: 0.6s;
  --ripple-scale: 4;
}

.ripple {
  /* ...其他样式... */
  background: var(--ripple-color);
  animation: ripple var(--ripple-duration) linear;
}

@keyframes ripple {
  to {
    transform: scale(var(--ripple-scale));
    opacity: 0;
  }
}

这些方法提供了从简单到复杂的多种实现方案,可根据具体需求选择适合的方式。现代浏览器都支持这些 CSS 特性,但如需兼容旧版浏览器可能需要添加前缀或降级方案。

标签: 波纹css
分享给朋友:

相关文章

css表单制作

css表单制作

基础表单结构 使用HTML创建表单的基本结构,包含<form>标签及输入字段。表单通常需要action(提交地址)和method(提交方法)属性。 <form action="/s…

css如何制作六边形

css如何制作六边形

使用CSS制作六边形 六边形可以通过CSS的clip-path属性或伪元素结合旋转和定位来实现。以下是两种常见方法: 方法一:使用clip-path属性 clip-path允许直接裁剪元素为六边形形…

css制作

css制作

CSS 基础语法 CSS(层叠样式表)用于描述HTML元素的样式。一个基本的CSS规则由选择器和声明块组成。选择器指定要样式化的HTML元素,声明块包含一个或多个属性-值对,用花括号 {} 包裹。…

css制作导航

css制作导航

CSS 制作导航的方法 基础水平导航栏 使用无序列表(<ul>)和浮动(float)或 Flexbox 布局实现水平导航: <nav> <ul class="ho…

纯css制作下拉菜单

纯css制作下拉菜单

使用纯CSS制作下拉菜单 HTML结构需要嵌套列表,外层为触发元素,内层为下拉内容。以下是一个基础结构示例: <div class="dropdown"> <button cl…

css制作春季踏青

css制作春季踏青

使用CSS制作春季踏青主题的网页元素 背景设计 为网页添加春季风格的背景,可以使用渐变色或自然图案。例如,使用柔和的绿色和粉色渐变: body { background: linear-grad…