You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移动端汉堡菜单居中及点击子菜单不消失问题求助

解决方案

我看了你的代码和站点的移动端问题,两个核心需求咱们一步步来解决:

1. 修复点击子菜单父项时菜单消失的问题

当前的问题出在事件冒泡上:你给#hamburger-menu绑定了点击切换菜单的事件,而#menu是它的子元素,点击菜单里的任何区域都会把事件传递给父容器,触发slideToggle()再次执行,导致菜单收起。

修改你的jQuery代码,添加阻止冒泡的逻辑,或者限制只有点击汉堡图标本身时才切换菜单:

$(document).ready(function() {
    $('#hamburger-menu').on('click', function (e) {
        // 仅当点击汉堡的三条杠或者容器空白区域时,才切换菜单
        const target = e.target;
        if(target.id === 'hamburger-menu' || target.classList.contains('bar1') || target.classList.contains('bar2') || target.classList.contains('bar3')){
            $("#menu").slideToggle();
        }
    });

    // 阻止菜单内所有点击事件冒泡到汉堡容器
    $('#menu').on('click', function(e) {
        e.stopPropagation();
    });
});

2. 让汉堡菜单和子菜单项居中显示

现在你的汉堡图标和子菜单没有居中样式,咱们在移动端媒体查询里补充CSS:

@media only screen and (min-device-width : 320px) and (max-device-width : 480px) {
    /* 保留你原有的CSS代码,新增以下内容 */
    
    /* 让汉堡图标容器居中 */
    #hamburger-menu {
        text-align: center;
        padding: 1rem 0; /* 给汉堡图标添加上下内边距,避免贴顶 */
    }

    /* 让子菜单项文字居中 */
    ul#menu > li > ul.submenu li {
        text-align: center;
    }

    /* 去掉子菜单链接的左侧内边距,确保内容完全居中 */
    ul#menu > li > ul.submenu a {
        padding-left: 0;
    }
}

这样调整后,汉堡图标会在页面顶部居中,子菜单的每一项文字也会完全居中显示,同时点击带子菜单的父项时,菜单不会再意外收起。

额外小建议

  • 可以给包含子菜单的父项添加一个小箭头(比如通过CSS伪元素::after),提示用户这里有下拉内容,提升移动端的交互体验
  • 给子菜单的展开/收起添加过渡动画,让界面变化更平滑自然

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:00:28