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

响应式导航栏调整窗口大小后消失,疑与JS函数冲突求助

嘿,我来帮你排查这个响应式导航栏的问题!你遇到的情况很典型——汉堡菜单切换后,屏幕恢复宽屏时导航栏不回来,大概率是JS里的状态没有同步更新,咱们一步步来解决:

问题排查与解决方案

首先明确核心矛盾:窄屏时通过汉堡按钮控制导航显示/隐藏,但屏幕尺寸恢复宽屏时,JS没有自动把导航状态重置为“默认显示”,加上可能的CSS或代码冲突,就导致了导航消失的问题。

1. 先补上窗口尺寸变化的监听逻辑

这是最常见的遗漏点——你只处理了汉堡按钮的点击事件,却没监听屏幕大小变化来同步导航状态。添加这段JS代码:

// 监听窗口 resize 事件,同步导航状态
$(window).on('resize', function() {
  const screenWidth = $(window).width();
  const navMenu = $('.nav-menu'); // 替换成你实际的导航菜单选择器
  const hamburger = $('.hamburger'); // 替换成你实际的汉堡按钮选择器

  // 当屏幕宽度回到968px及以上时
  if (screenWidth >= 968) {
    // 强制显示导航菜单,移除窄屏时的隐藏类
    navMenu.removeClass('active'); 
    // 重置汉堡按钮的激活状态(比如变回未点击样式)
    hamburger.removeClass('active');
  }
});

2. 检查平滑滚动代码的潜在冲突

你提供的平滑滚动代码本身不会直接导致导航消失,但如果导航链接也是锚点链接(href^="#"),窄屏点击后可能触发了额外的菜单隐藏逻辑,却没在宽屏时重置。可以修改平滑滚动代码,增加屏幕尺寸判断:

$(document).on('click', 'a[href^="#"]', function (event) { 
  event.preventDefault(); 
  const screenWidth = $(window).width();
  const navMenu = $('.nav-menu');
  
  // 只有窄屏时,点击导航链接才关闭汉堡菜单
  if (screenWidth < 968) {
    navMenu.removeClass('active');
    $('.hamburger').removeClass('active');
  }

  $('html, body').animate({ 
    scrollTop: $($.attr(this, 'href')).offset().top 
  }, 1400); 
});

3. 确保CSS媒体查询的优先级正确

有时候不是JS的锅,是CSS样式被覆盖了。建议用类控制显示隐藏,而不是让JS直接修改display属性,这样媒体查询的优先级更清晰:

/* 宽屏默认样式 */
@media (min-width: 968px) {
  .nav-menu {
    display: flex !important; /* 确保不会被JS的内联样式覆盖,或者调整类的优先级替代!important */
  }
  .hamburger {
    display: none;
  }
}

/* 窄屏默认样式 */
@media (max-width: 967px) {
  .nav-menu {
    display: none;
  }
  .hamburger {
    display: block;
  }
  /* 点击汉堡后显示菜单的类 */
  .nav-menu.active {
    display: flex; /* 按你的布局改成block也可以 */
  }
}

4. 核对汉堡按钮的点击逻辑

确保你的汉堡按钮点击函数只是切换类,没有直接修改display属性(避免和CSS媒体查询冲突):

$('.hamburger').on('click', function() {
  $(this).toggleClass('active');
  $('.nav-menu').toggleClass('active');
});

把这些调整做完,基本就能解决屏幕恢复宽屏后导航消失的问题了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:02:43