信息发布→ 登录 注册 退出

css按钮想加入波纹点击效果怎么制作_通过::after伪元素扩散并结合动画

发布时间:2025-12-12

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

css按钮想加入波纹点击效果怎么制作_通过::after伪元素扩散并结合动画

::after 伪元素实现按钮波纹点击效果,核心是:在点击时动态生成一个圆形遮罩,从点击位置中心向外扩散、透明度渐隐。关键在于获取点击坐标、定位伪元素、触发动画。

1. 基础结构与定位准备

按钮本身需设为相对定位(position: relative),以便 ::after 能以它为参考进行绝对定位。伪元素初始隐藏,尺寸为 0,圆角设为 50% 实现圆形。

  • 给按钮加 position: relative; overflow: hidden;(防止波纹溢出)
  • ::after 设为 content: ""position: absoluteborder-radius: 50%
  • 初始状态:opacity: 0; transform: scale(0);

2. 动态设置点击坐标(JS 必不可少)

CSS 无法自动读取鼠标位置,必须用 J*aScript 在点击时计算并写入自定义属性(如 --x--y),再由 ::after 读取。

  • 监听按钮 click 事件
  • event.clientX - button.getBoundingClientRect().left 算出相对于按钮的 X 坐标(同理算 Y)
  • 通过 button.style.setProperty('--x', x + 'px')--y 写入

3. 动画与样式绑定

伪元素通过 CSS 变量定位,并用 @keyframes 控制扩散+淡出。动画需设为 forwards 保证结束状态保留(避免闪回)。

Codeium Codeium

一个免费的AI代码自动完成和搜索工具

Codeium 345 查看详情 Codeium

立即学习“前端免费学习笔记(深入)”;

  • ::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

4. 防止连续点击错位的小技巧

快速连点可能导致多个波纹叠加或定位错误。可加简单节流或重置逻辑:

  • 每次点击前先清除上一次的动画类(如有)或重置 ::aftertransformopacity
  • getComputedStyle 检查是否正在动画中,跳过重复触发
  • 或更简单:动画结束后用 animationend 事件自动清空 --x/--y

基本上就这些。不复杂但容易忽略 JS 坐标计算和伪元素定位的配合。做好这几点,波纹就能稳稳从指尖绽开。

以上就是css按钮想加入波纹点击效果怎么制作_通过::after伪元素扩散并结合动画的详细内容,更多请关注其它相关文章!


相关文章: 不同用户不同价格! 索尼开启账户个性化定价测试  QQ邮箱在线使用入口 QQ邮箱个人账号网页版登录  Golang如何测试channel通信行为_Golang channel通信测试与分析方法  J*aScript Promise链中如何正确终止后续.then执行并处理错误  拼多多视频播放卡顿如何处理 拼多多视频播放优化技巧  J*aScript实现单选按钮与关联输入框的联动禁用教程  Lar*el拼写容错搜索策略:基于语音编码的优化实践  韩小圈电脑版在线入口_网页版免费登录地址  CKEditor 5 自定义构建在React应用中渲染失败的调试与解决  蛙漫限时开放最深处链接_蛙漫全站漫画会员同款秒开地址  夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案  SteamMachine定价或为699美元 大家想入手吗?  Tabulator表格中精确实现日期时间排序的指南  Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置  Pandas DataFrame:高效添加条件计算列  探索高级语言到C/C++的转译路径:以Go为例及内存管理策略  优化Log4j2控制台输出性能:解决异步日志瓶颈  解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误  PHP基于会话的用户类型页面访问控制指南  使用PHP从URL路径中提取倒数第二个片段  Node.js 中使用 node-cron 实现定时 API 数据抓取与处理  解决Python logging 中 datefmt 导致时间戳固定不变的问题  抖音网页版平台入口 抖音网页版官网在线访问教程  Promise错误处理:在catch后终止链式then执行的策略  狙击外星人小游戏开始_狙击外星人小游戏立即开始  Win11怎么关闭触摸屏_Windows 11禁用HID符合标准触摸屏  UC浏览器官网入口2025最新 UC浏览器网页版正式地址  漫蛙manwa2最新登录网址_漫蛙manwa2手机网页版入口  知音漫客正版漫画平台_知音漫客官网账号登录  Golang如何实现状态模式管理对象状态_Golang State模式实现技巧  葱吃多了会怎样 葱吃多了会伤胃吗  Golang如何通过reflect操作map_Golang reflect map操作与遍历技巧  c++如何实现一个简单的ECS框架_c++数据驱动设计与游戏开发  顺丰快递查单号物流信息 顺丰快递小程序查询入口  QQ邮箱登录官网首页 腾讯QQ邮箱网页入口  如何配置Composer的PSR-4自动加载_Composer自动加载命名空间映射实践教程  mysql如何设置表访问权限_mysql表访问权限配置  虚幻5科幻题材ARPG大作遭取消!本是《奇异人生》厂商新作  解决移动端滚动问题的overflow属性应用指南  QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台  俄罗斯方块最新版入口 俄罗斯方块在线玩官网入口  PDF文件体积过大处理_PDF压缩技巧详解  腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程  PySpark中从现有列右侧提取可变长度字符创建新列的教程  QQ邮箱官网登录入口 QQ邮箱网页版邮箱快速登录  J*aScript实现动态背景色下的文本与按钮颜色自适应调整  Django表单提交验证失败后保持字段值不刷新  现代化 SciPy 一维插值:interp1d 的替代方案与最佳实践  css卡片内容溢出如何处理_使用overflow隐藏或scroll显示内容  PHP实现即时文章发布与单次数据库写入:自提交模式教程 

在线客服
服务热线

服务热线

4008988990

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!