用::after实现按钮波纹效果需JS动态设置点击坐标并绑定CSS动画:按钮设relative定位和overflow:hidden;::after初始隐藏、圆形、居中定位;点击时计算相对坐标写入--x/--y变量;动画从scale(0)opacity(0.6)扩散至scale(3)opacity(0),结束保留状态。

用 ::after 伪元素实现按钮波纹点击效果,核心是:在点击时动态生成一个圆形遮罩,从点击位置中心向外扩散、透明度渐隐。关键在于获取点击坐标、定位伪元素、触发动画。
按钮本身需设为相对定位(position: relative),以便 ::after 能以它为参考进行绝对定位。伪元素初始隐藏,尺寸为 0,圆角设为 50% 实现圆形。
position: relative; overflow: hidden;(防止波纹溢出)::after 设为 content: ""、position: absolute、border-radius: 50%
opacity: 0; transform: scale(0);
CSS 无法自动读取鼠标位置,必须用 JavaScript 在点击时计算并写入自定义属性(如 --x、--y),再由 ::after 读取。
click 事件event.clientX - button.getBoundingClientRect().left 算出相对于按钮的 X 坐标(同理算 Y)button.style.setProperty('--x', x + 'px') 和 --y 写入伪元素通过 CSS 变量定位,并用 @keyframes 控制扩散+淡出。动画需设为 forwards 保证结束状态保留(避免闪回)。
立即学习“前端免费学习笔记(深入)”;
::after 定位:left: var(--x); top: var(--y); transform: translate(-50%, -50) scale(0);
scale(0) opacity(0.6) → scale(3) opacity(0)
transition: transform 0.4s ease, opacity 0.4s ease; 或直接用 animation
快速连点可能导致多个波纹叠加或定位错误。可加简单节流或重置逻辑:
::after 的 transform 和 opacity
getComputedStyle 检查是否正在动画中,跳过重复触发animationend 事件自动清空 --x/--y
基本上就这些。不复杂但容易忽略 JS 坐标计算和伪元素定位的配合。做好这几点,波纹就能稳稳从指尖绽开。
以上就是css按钮想加入波纹点击效果怎么制作_通过::after伪元素扩散并结合动画的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号