h5页面实现隐藏彩蛋与长按雷达波动画需三步:一、用absolute+1px+opacity0+pointer-events:auto隐藏元素;二、手动计时监听touchstart/mousedown防误触;三、svg circle+css动画实现扩散效果,播完自动移除。

在 H5 页面中实现「隐藏彩蛋 + 长按触发雷达波扩散动画」,核心是三步:隐藏元素、监听长按事件、播放 SVG 或 Canvas 雷达波动画。下面分块说明关键实现方式,不依赖框架,纯原生 JS + CSS/HTML 可跑通。
一、把彩蛋元素藏得“看不见但摸得着”
彩蛋通常是一个不可见但可交互的 DOM 元素(比如 <div id="easter-egg"></div>),需满足:不干扰布局、不遮挡内容、能响应触摸/鼠标长按。
- 用
position: absolute+width/height: 1px+opacity: 0+pointer-events: auto - 避免用
display: none或visibility: hidden(它们会禁用事件) - 推荐定位在页面右下角或 logo 区域等用户可能“试探性长按”的位置
- 可加
z-index: 9999确保不被其他层挡住
二、可靠识别“长按”,兼容手机和 PC
浏览器无原生 longpress 事件,需手动计时。注意防误触、兼容 touch/mouse、及时清除定时器。
- 监听
touchstart/mousedown,启动setTimeout(如 800ms) - 在
touchend/mouseup或touchcancel/mouseleave中 clearTimeout - 长按成立后,只执行一次动画(加标志位
isActivated = true防重复) - 移动端记得加
event.preventDefault()防系统默认长按菜单弹出
三、雷达波扩散动画:轻量又带感
推荐用 SVG <circle></circle> + CSS @keyframes 实现,性能好、易控制、支持缩放适配。
- 在触发点动态创建一个
<svg></svg>(或复用隐藏的 SVG 容器) - 插入多个同心
<circle></circle>,stroke-dasharray控制虚线效果,配合transform: scale()和透明度变化模拟“波纹扩散” - 用 CSS 动画控制:从
scale(0) opacity(0.8)→scale(3) opacity(0),持续 1.2s,ease-out - 播完自动移除 SVG 元素,避免内存堆积
- 进阶可加音效(短促“ping”声)提升反馈感,用
AudioAPI 播放 base64 音频
四、小技巧让彩蛋更“彩”
真正让用户愿意找、愿意试,靠的是“可感知的线索”和“即时正反馈”。
- 首次进入页面时,在彩蛋区域轻微
pulse动画(0.5s 透明度闪动),仅一次 - 长按过程中加视觉提示:比如底部浮现“再坚持一下…”文字(300ms 后出现)
- 动画结束后,可淡入一句彩蛋文案或跳转隐藏页(用
history.pushState避免刷新) - 本地存储记录是否已触发过,避免反复打扰;也可设为“每日限次”
不复杂但容易忽略:务必在真机上测试 touch 延迟、iOS Safari 的 click 延迟、微信内置浏览器的 touch 兼容性。加个 console.log('彩蛋已激活') 调试非常实用。











