我有一个 jquery.mmenu,它位于桌面视图中页面的一半左右,我相信脚本将它定位为正文中的第一项。
我们只在移动设备上以响应式布局使用 mmenu,因此我们希望它不会影响我们的任何桌面样式。
有没有办法去掉定位,让我们的菜单在桌面视图中相对定位?
注意:我们位于强大的防火墙后面,因此我没有查看该站点的链接。如果确实需要,那么我可以花一些时间将页面移动到另一台服务器进行查看。
谢谢!
只是为了澄清原始帖子/问题并提供更多细节。
我们的网站上有两个 NAV 块。一个在顶部,一个在中间页面。在原始代码中,导航容器被放置在其他 div 容器中,以控制它们在布局中的位置。
mmenu 似乎从它们的原始位置抓取了两个导航容器,并在 mmenu js 执行期间对主体进行了前置操作。这会更改原始代码中的定位以使 mmenu 工作。
位置的变化显然会导致在桌面视图中查看时布局无法正确加载,因为过去位于页面中间的 div 容器中的菜单现在呈现在页面顶部,因为它的 mmenu 修改位置。
有没有办法只在小于 800px 的屏幕调整大小时初始化 mmenu,或者在桌面视图中卸载它并将导航容器放回原来的位置?
我尝试了各种方法来处理导航的重定位,但取得了微不足道的成功。
尝试了以下方法:
添加了一些脚本来检查浏览器窗口的大小调整,并用 if 包装 mmenu 代码,以便仅在浏览器窗口为 800 像素或更少时运行它。这有点效果,因为一旦执行 mmenu js,导航位置就会改变,即使浏览器的大小调整到 800 像素以上,导航容器仍然保留在不正确的位置。
我尝试了上面的方法,添加了一些代码来抓取应该放在页面中间的导航容器,并将其重新写入分辨率高于 800 像素的 div 容器中,但这适用于移动设备和桌面视图。从桌面到移动似乎不会触发 mmenu,因为我确实相信它的大部分更改都是在页面加载时完成的,因此调整大小不会再次触发脚本以根据 mmenu 的需要更改导航容器。
如果我将浏览器窗口缩小到移动大小并刷新页面,则 mmenu 加载正常。
我们试图实现的行为与媒体查询几乎相同,因此我们可以根据需要以不同的分辨率控制 mmenu 的执行。
modernizr、enqueue、yepnope 都试过了,但似乎都只触发一次脚本,而不是因为屏幕大小发生了变化,而且显然没有解决导航容器位置的变化。
显示正在发生的事情的示例代码:
原始站点结构(缩短以仅显示相关项目):
<body>
<div id="wrapper">
<div id="header">
<div id="topnav">
<nav id="mainnav"></nav>
</div>
</div>
<div id="other"></div>
<div id="secondnav">
<nav id="midnav"></nav>
</div>
<div id="content"></div>
<div id="footer"></div>
</div>
</body>
MMENU 修改结构(在 mmenu.js 执行后):
<body>
<nav id="midnav"></nav>
<nav id="mainnav"></nav>
<div id="wrapper">
<div id="header">
<div id="topnav">
</div>
</div>
<div id="other"></div>
<div id="secondnav">
</div>
<div id="content"></div>
<div id="footer"></div>
</div>
</body>
希望以上内容可以进一步澄清我们遇到的问题。
最终目标是仅在移动设备中使用 mmenu 及其功能/样式,并使用我们自己的 CSS 菜单和桌面中的子菜单保持正确的位置,如上面的示例结构所示。
提前感谢您对此的任何帮助,因为我们几乎陷入困境。