抱歉,如果描述太长,我只是想提供尽可能多的信息。
最近我遇到了一个问题(我修复了它,但我不明白为什么会这样)。
问题是当您调整浏览器的大小时,例如宽度为 768 像素,媒体查询不起作用。为了工作,我不得不将浏览器宽度再减少大约 20-30 像素。
例如,当宽度小于 750px 时,768px 媒体查询很快就会起作用。
这是简化的代码。
HTML:
<div id="wrapper">
<header id="header">
<a href="" class="logo">
<img src="images/logo-wide.png" alt="logo" />
</a>
<a id="menu_button" href="#">menu</a>
<nav id="nav">
<ul id="menu">
<li><a href="" class="home">Home</a></li>
<li><a href="" class="services">Services</a>
... more navidation list items
</ul>
</nav>
</header>
... more code which is not relevant
</div>
CSS:
@media screen and (max-width: 768px)
{
div#wrapper
{
max-width:768px;
margin:0 auto;
}
a.logo
{
display:block;
float:left;
width:80%;
padding:25px 0;
height:33px;
}
a#menu_button
{
width:20%;
float:left;
display:block;
padding:50px 0 15px;
height:18px;
}
/* menu
----------------------*/
nav,
#nav
{
width:100%;
float:left;
display:none;
}
ul#menu ul
{
display:none;
}
ul.sub.active
{
display:block !important;
}
ul#menu li
{
float:none;
}
ul#menu a
{
width:100%;
padding:20px 0;
text-align:left;
text-indent: 70px;
display:block;
margin-top: 1px;
}
}
@media screen and (min-width: 769px)
{
div#wrapper
{
max-width:960px;
margin:5px auto;
}
a.logo
{
display:block;
float:left;
padding:20px 35px;
}
a#menu_button
{
display:none;
}
/* menu
----------------------*/
nav,
#nav
{
float:right;
display:block;
}
.activemobile
{
display:block !important;
}
ul#menu li
{
float:left;
}
ul#menu a
{
width:90px;
padding:50px 0 5px;
display:block;
margin: 0 0 0 2px;
}
ul#menu ul
{
display:none;
position:absolute;
margin-left:2px;
right:0;
}
ul#menu li:hover ul
{
display:block;
z-index:999;
}
ul#menu ul li
{
float:left;
}
ul#menu ul li a
{
width:80px;
padding:5px;
font-size:12px;
margin:2px 0 0 2px;
}
...
}
无效的代码:
ww = document.body.clientWidth;// i take this on window resize and on load
var adjustMenu = function() {
if (ww < 768) {
if (!$("#nav").hasClass("active")) {
$("#nav").hide();
} else {
$("#nav").show();
}
...
有效的代码(我使用modernizr)
var adjustMenu = function() {
if (Modernizr.mq('(max-width: 768px)')) {
if ($("#nav").hasClass("active"))
$("#nav").show();
else
$("#nav").hide();
...
有人能告诉我为什么媒体查询没有工作有大约 20-30px 的间隙吗?