手机打开页面,顶部汉堡菜单下面还露出一排桌面导航,横向溢出 80px。DOM 里两个 nav 都在,只有外层容器加了 hidden 类。乍看像缓存或者权限的锅,追下去往往不是。

@media (max-width: 767px) {
  .nav-desktop { display: none; }
  .nav-mobile { display: flex; }
}

追下去是这么回事:主题输出桌面菜单和移动菜单两份,靠 CSS 在断点里各隐藏一个。媒体查询只写了 min-width 768 隐藏移动版,桌面版在手机上并没有被藏掉。

「双份导航输出」这类改动最怕改一半,回滚脚本先准备好,再动生产。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。

同一份配置存在多处的,先确认改的是被加载的那一份。

具体做法是,两份菜单共用一个容器 断点只切换容器状态;隐藏的那份用 display:none 别只写 visibility;用真机 390px 宽度检查 别只看开发者工具缩放。

验收就看一点,390px 宽度下只看到一份导航,页面不再横向溢出。

作者 9823189