起因:老板非要加个会自己动的菜单
上周二开例会,老板指着竞品网站说:“人家这个菜单多酷,鼠标放上去自己弹出来,咱们也得弄个一样的!”我心想这不就是自动播放菜单嘛听起来简单,结果一动手全是坑。
找资料看得头晕眼花
我立马打开搜索引擎开找教程,好家伙,方法五花八门。有让用现成插件的,有用CSS动画的,还有人扯什么复杂JavaScript轮子。挑了个点赞多的CSS方案,照着教程复制粘贴,菜单倒是能动了,但跟抽筋似的乱蹦——鼠标刚离开,菜单还悬在那儿抖两下才收回去,看着贼难受。

自己动手惨遭打脸
插件靠不住,只能硬着头皮手写。琢磨着不就是鼠标放上去触发,移开就消失嘛先拿两个最常见的HTML标签练手:
- 尝试一: 给菜单盒子加个鼠标悬停显示效果。鼠标移开倒是消失了,可点菜单里的链接要了命了——手稍微抖一下移开菜单区域,链接直接消失点不着!气得我想砸键盘。
 - 尝试二: 换成延迟消失,设了个半秒钟缓冲。鼠标移开等半秒菜单才收,这下能点着链接了。但新坑又来了:网页里但凡还有别的会动的元素靠近,鼠标不小心掠过,菜单又诈尸一样弹出来,乱得要死。老板路过瞄了一眼说:“你这菜单咋自己跟自己打架?” 我脸都绿了。
 
手机党直接给整不会了
电脑端刚调得像点样,用手机浏览器一看,彻底傻眼。手机哪来的鼠标悬停?菜单直接瘫那儿,要么完全不显示,要么干脆整个糊在屏幕上收不回去。用户想关都找不到地方,体验就是一坨屎。

翻车后的意外收获
加班到凌晨两点,烟抽了半包,气得把网上教程全关了。自暴自弃打开抽屉,突然发现压箱底的破笔记里写着:“移动设备优先,别死磕悬停”。醍醐灌顶! 第二天全推倒重来:
- 彻底放弃纯CSS花活儿,老实写JavaScript;
 - 电脑端靠悬停触发,重点处理延迟和防抖(别动不动乱弹);
 - 手机上改成手指点击才展开,搭配一个明显的小叉叉按钮关闭;
 - 加了层灰色半透明蒙版,点空白处也能关菜单;
 - 测试时举着手机满办公室溜达,看会不会自己抽风。
 
憋出来的玩意儿
现在这玩意儿总算像个人样了:电脑用着流畅,手机点着不抽风,老板看了直点头。折腾一周就为这点功能,说出来都脸红。重点根本不是代码多牛,而是得早想到:手机上根本没法悬停! 要是开始就琢磨兼容性,省下的时间够我写十篇实践记录了。
PS:效果刚上线,媳妇拿手机刷咱公司网站,突然冲我吼:“你做的这破菜单!我刚点开想看看有啥优惠,你儿子一巴掌拍屏幕上,弹出个蒙版关都关不掉!” ..看来防儿童误触功能还得迭代。

