新闻中心

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伪元素扩散并结合动画的详细内容,更多请关注其它相关文章!


# javascript  # java  # css  # 抚顺seo快排成功案例  # 广州银川网站推广  # 谷歌SEO和站内SEO的区别  # 酒店网站推广方案  # 百度热搜关键词价格排名  # 网站建设费怎么算钱的  # 枝江互联网智能营销推广  # 无锡专业高端网站建设  # 上海网站建设空间优化  # 运城网站建设目的  # 就能  # 鼠标  # 有哪些  # 后仍  # 输入框  # 绑定  # 并结合  # 表单  # 时计  # 设为  # 相对定位  # overflow  # 绝对定位  # css动画  # 伪元素  # js 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 精准捕获:如何在页面中监听除特定元素外的所有点击事件  支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样  使用Python高效删除Word宏并转换DOCM为DOCX格式  uc浏览器网页版极速入口 uc网页浏览器网页版流畅体验  Win11怎么设置鼠标指针速度_Win11提高鼠标指针精确度选项  优化MinIO list_objects_v2 操作的性能瓶颈与最佳实践  海棠账号登录入口_登录海棠账户同步阅读记录  css卡片内容溢出如何处理_使用overflow隐藏或scroll显示内容  Pandas DataFrame 多条件优先级排序与排名  CSS如何设置hover状态颜色_hover伪类调整背景或文字颜色  Python多版本共存与虚拟环境管理深度指南  知乎APP怎么管理已购盐选内容_知乎APP盐选内容购买记录与查看方法  KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法  夸克浏览器图书入口 夸克手机浏览器阅读入口  新手怎么开始学化妆 零基础化妆入门教程  J*aScript实现单选按钮与关联输入框的联动禁用教程  抖音极速版最新版本 抖音极速版官方下载地址  vivo手机参数配置怎么增强信号_vivo手机参数配置信号增强方法  将HTML动态表格多行数据保存到Google Sheet的教程  CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠  高德地图沿途添加点失败如何解决 高德多点规划方法  天眼查怎么看公司融资情况 天眼查企业融资历史查询步骤【攻略】  漫蛙2在线漫画入口 漫蛙正版漫画网页版直达  J*aScript异步迭代器_j*ascript异步遍历  Android Studio计算器C键逻辑错误排查与修复:条件判断优化指南  Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录  淘宝支付提示失败如何解决 淘宝支付流程优化方法  妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画  AO3官方可用镜像 Archive of Our Own网页版最新入口  Python实现多节点属性重叠度分析教程  J*aScript中在Map循环中检测并处理空数组元素  Pandas DataFrame:高效添加条件计算列  Node.js CSV 数据处理:基于字段值条件过滤整条记录的策略  AO3访问入口汇总 AO3网页版同人作品一键直达  邮政快递单号查询入口 邮政快递物流信息在线查询入口  C++如何检测键盘输入_C++ _kbhit与_getch函数非阻塞输入  深入理解字体排版:Adobe光学字偶距与CSS字偶距的差异与实现  CSS条件样式无法按设备触发怎么排查_media条件语句正确设置解决触发问题  uc手机浏览器网页版入口 uc浏览器手机版便捷登录首页  b站赚钱渠道_b站收益来源  Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧  必由学官方网站入口 必由学学生教师共用登录通道  Golang如何优雅处理error_Golang error处理最佳实践总结  Composer的 archive 命令怎么用_快速打包你的PHP项目及其Composer依赖  如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略  Win10双系统截图高效法 截屏快捷键速记【技巧】  QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  12306选座如何查看座位示意图_12306座位示意图解读与使用  向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程  微信聊天记录怎么加密_微信聊天记录加密方法 

搜索