知道为什么在下面的示例中,媒体查询在 被 js 更改后停止更改菜单栏 的高度吗? (使窗口变小并单击箭头以展开迷你菜单)。我是否需要为菜单元素或其他东西注册一个原点?

CSS:

#menu {
    position: fixed;
    left: 0px;
    bottom: 0px;
    width: 100%;
    height: 90px;
    z-index: 11000;
    opacity: 1;
    background-color: #F03600;
    }

JS:
if ($("#arrowup").css('top') == '0px') {
    $("#menu").animate({'height':'270px'}, 800, "easeInOutQuint");
    } else {
    $("#menu").animate({'height':'55px'}, 800, "easeInOutQuint");
    }

你可以在这里查看页面,所有代码都在一个页面上:

http://www.nioute.co.uk/stuff/

另外,关于媒体查询/js 交互有什么好的读物?

谢谢!

最佳答案

媒体查询不起作用的原因是因为当您使用 Javascript 修改栏时,它会应用 inline-css。这会覆盖您在样式表中可能拥有的 CSS。问题似乎是,当您将箭头向下切换时,#menu 应用了 height="55px" 的内联样式,这会在更大的尺寸上阻止 90px 的常规样式。

解决方案是使用 $(window).resize(function()...); 之类的东西将窗口大小调整为大于媒体查询断点时清除样式,并根据断点检查窗口的当前宽度。如果返回 true,则调用 $('#menu').attr('style', ''); 并删除内联样式。

关于javascript - Javascript 更改元素 CSS 后媒体查询无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17623003/

10-13 06:32