当前位置:首页 > JavaScript

js实现波纹

2026-04-06 22:51:16JavaScript

实现波纹效果的JavaScript方法

使用JavaScript和CSS结合实现点击或悬停时的波纹效果,以下是两种常见实现方式:

方式一:纯CSS实现(简单波纹) 通过CSS的::after伪元素和动画实现基础波纹效果:

.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.01%);
  transform: scale(10);
  opacity: 0;
  transition: transform 0.5s, opacity 1s;
}
.ripple-button:active::after {
  transform: scale(0);
  opacity: 0.3;
  transition: 0s;
}

方式二:JavaScript动态创建波纹 更灵活的动态实现方法:

function createRipple(event) {
  const button = event.currentTarget;
  const circle = document.createElement("span");
  const diameter = Math.max(button.clientWidth, button.clientHeight);
  const radius = diameter / 2;

  circle.style.width = circle.style.height = `${diameter}px`;
  circle.style.left = `${event.clientX - button.getBoundingClientRect().left - radius}px`;
  circle.style.top = `${event.clientY - button.getBoundingClientRect().top - radius}px`;
  circle.classList.add("ripple");

  const ripple = button.getElementsByClassName("ripple")[0];
  if (ripple) ripple.remove();

  button.appendChild(circle);
}

// 为元素添加事件监听
document.querySelectorAll('.ripple-btn').forEach(btn => {
  btn.addEventListener('click', createRipple);
});

对应CSS样式:

js实现波纹

.ripple-btn {
  position: relative;
  overflow: hidden;
}
.ripple {
  position: absolute;
  border-radius: 50%;
  background-color: rgba(255, 255, 255, 0.7);
  transform: scale(0);
  animation: ripple 600ms linear;
  pointer-events: none;
}
@keyframes ripple {
  to {
    transform: scale(4);
    opacity: 0;
  }
}

自定义选项扩展

  1. 颜色修改:调整CSS中background-color值改变波纹颜色
  2. 动画时长:修改animation-durationtransition属性值
  3. 触发方式:将事件监听从click改为mouseenter可实现悬停效果
  4. 多元素支持:使用事件委托或给多个元素添加相同class实现批量应用

注意事项

  • 确保父容器有position: relativeoverflow: hidden
  • 移动端设备可能需要添加touchstart事件监听
  • 性能优化:可考虑使用CSS硬件加速(添加will-change: transform

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

相关文章

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…

js 实现按钮点击

js 实现按钮点击

实现按钮点击的 JavaScript 方法 HTML 按钮元素 在 HTML 中创建一个按钮,可以通过 <button> 或 <input> 标签实现: <button…