Materialize 响应式导航栏不显示的主因是初始化缺失或 HTML 结构错误:1. v1+ 需手动调用 M.Sidenav.init();2. trigger 按钮必须含 class="sidenav-trigger" 且 data-target 与 sidenav id 严格匹配;3. 确保 Materialize JS 已加载、DOM 就绪、无控制台报错;4. 排查 z-index 遮挡、viewport 缺失及 class 拼写错误。
Materialize 的响应式导航栏(sidenav)不显示,通常不是 CSS 问题,而是 JavaScript 初始化或 HTML 结构没到位。重点检查以下三处:
Materialize v1+ 不再自动初始化 sidenav,必须手动调用 M.Sidenav.init()。
ms = document.querySelectorAll('.sidenav');$('.sidenav').sidenav(),会报错或静默失败。触发按钮(通常是 hamburger 图标)必须有 data-target 属性,且值与 sidenav 的 id 完全一致。
sidenav 初始化代码必须在 Materialize JS 文件之后、且在 DOM 元素渲染完成之后运行。
ReferenceError: M is not defined → 表示 Materialize JS 未加载;.sidenav,确认对应 DOM 节点已存在且未被动态移除。 已添加,否则媒体查询失效,trigger 按钮不出现;sidenave、siderav-trigger 或漏掉 sidenav 类名本身。