【发布时间】:2015-07-23 23:43:15
【问题描述】:
我有一个移动菜单按钮(只能通过 display:block 使用媒体查询查看)。单击该按钮时,会出现我的主“移动”菜单 - 我使用简单的 javascript 代码来执行此操作(见下文)。
问题...如果我单击按钮展开菜单(将内联样式从 display:none 更改为 display:block),然后增加浏览器大小...我的菜单不再消失。因此,内联样式无法识别媒体查询...
下面是扩展我的菜单的脚本...
<!-- Menu Expander / Toggle Visibility -->
<script type="text/javascript">
function toggle_menu(id) {
var e = document.getElementById(id);
if (e.style.display == 'block') e.style.display = 'none';
else e.style.display = 'block';
}
</script>
这里有一些样式......您会看到 menu-mobile(这是实际的菜单)和 mobile-menu-but(这是按钮)是隐藏的(带有 display:none)。当浏览器窗口缩小时,按钮出现(在媒体查询中显示:块),但菜单仍然隐藏。然后,当您单击 javascript 按钮时,将添加内联样式 display:block 以设置为移动菜单。
#mobile-menu-but, #menu-mobile { display:none; }
#menu a, #menu a:link { padding: 15px 16px 12px 16px; }
@media (max-width: 790px) {
/* Switch to Mobile Menu when too long */
#menu { display:none; } /* Hide Main Menu */
#mobile-menu-but { display:block; float:right; margin:0 20px 0 0; height:50px; padding:5px 0; }
#mobile-menu-but a { float:right; }
.menu-txt { margin:10px 10px 0 0; float:right; }
#menu-mobile { width:100%; background-color:#000; text-transform:uppercase;
font-size:16px; font-family:"AvantGarde", "Helvetica Neue", Arial, Helvetica, sans-serif; } }
【问题讨论】:
-
内联样式确实与媒体查询无关。媒体查询根据查询条件说明样式表的哪一部分适用。直接应用于元素的样式总是会覆盖样式表中的内容(
!important除外,这通常是做错事的标志)。 -
我认为您可以将
#menu { display:none; }移出媒体查询...
标签: javascript css responsive-design media-queries inline-styles