【发布时间】:2015-06-01 11:36:52
【问题描述】:
我有一个带有左侧菜单的 Web 应用程序。该菜单在浏览器窗口较宽(例如,桌面)时很有用,但在窗口较窄(例如,移动设备)时会占用太多空间。
使用 css @media 的东西,我可以做到,如果你让浏览器窗口小于某个调整大小的宽度,它将切换到移动模式。在这种模式下,我仍然希望菜单可用,但在用户单击按钮将其显示之前将其隐藏。
这很容易,但我遇到了问题。如果是普通桌面用户:
- 切换到移动模式(将浏览器调整为小于调整宽度)
- 打开菜单(javascript 将其
display:设置为block) - 关闭菜单(js 将其
display:设置为none) - 切换回桌面模式(将浏览器重新调整为宽屏)
然后菜单仍然使用display:none 并且是不可见的,即使它在桌面模式下应该始终可用。
这是working illustration of the problem。
我的问题:我能做些什么来防止这种情况发生吗?也许有一种方法可以检测浏览器何时切换它正在使用的样式表,并在重新进入桌面模式时将菜单栏重置为display:block?
基本 HTML 代码:
<link rel="stylesheet" href="desktop.css" media="all and (min-width: 600px)"/>
<link rel="stylesheet" href="mobile.css" media="all and (max-width: 600px)"/>
...
<div id="left"> ... menu bar ... </div>
<div id="right"> ... content ... </div>
移动样式表:
#left { display: none; position: fixed; z-index: 100; ... }
#right { left: 0px; ... }
桌面样式表
#left { display: block; position: fixed; left: 0; ...}
#right { position: fixed; left: 170px; ...}
用于切换菜单的Javascript
function toggleLeft() { $("#left").toggle(); } // Using jQuery
非常感谢!!
【问题讨论】:
标签: javascript css