当前位置:首页 > JavaScript

js实现波纹

2026-04-06 22:51:16JavaScript

实现波纹效果的JavaScript方法

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

js实现波纹

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

js实现波纹

.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样式:

.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实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…