如何将此媒体查询转换为 jquery?

Posted

技术标签:

【中文标题】如何将此媒体查询转换为 jquery?【英文标题】:How to convert this media query to jquery? 【发布时间】:2016-03-30 17:10:01 【问题描述】:

我想编写 jquery 代码,当我的网站通过移动设备加载时显示所有子菜单。此代码存在于 Bootstrap.css 文件中。请指教。

        @media screen and (max-width: 768px)          
      ul.nav li.dropdown ul.dropdown-menu display: block; 

【问题讨论】:

【参考方案1】:

请记住 $(window).width() 和 CSS 计算的宽度因滚动条而不同,在某些情况下 .innerWidth 会起作用,但是这也是不依赖的东西。

如果不需要 IE9 支持,那么您可以使用 window.matchMedia() (MDN documentation)。

    if (window.matchMedia('(max-width: 768px)').matches) 
        $("ul.nav li.dropdown ul.dropdown-menu").show();
     else 
        $("ul.nav li.dropdown ul.dropdown-menu").hide();
    

window.matchMedia与CSS媒体查询完全一致,浏览器支持相当不错:http://caniuse.com/#feat=matchmedia

使用 Modernizr:

Modernizr 是一个基于 JS 的库,如果你需要支持更多的浏览器可以使用Modernizr's mq method,它支持所有能够理解 CSS 媒体查询的浏览器。

if (Modernizr.mq('(max-width: 768px)')) 
    $("ul.nav li.dropdown ul.dropdown-menu").show();
 else 
    $("ul.nav li.dropdown ul.dropdown-menu").hide();

Source

【讨论】:

这是一个完整的答案。谢谢。 @programmer138200 很高兴它有帮助,请考虑投票并将其标记为正确答案。【参考方案2】:
if ($(window).width() <= 768)
    $('ul.nav li.dropdown ul.dropdown-menu').css('display', 'block');

【讨论】:

【参考方案3】:

本文最佳解决方案:http://www.sitepoint.com/javascript-media-queries/

var mq = window.matchMedia( "(min-width: 500px)" );
if (mq.matches) 
    // window width is at least 500px

else 
    // window width is less than 500px

【讨论】:

以上是关于如何将此媒体查询转换为 jquery?的主要内容,如果未能解决你的问题,请参考以下文章

CSS媒体查询否定[重复]

如何在媒体查询 CSS 中禁用 jQuery 属性

当我到达某个媒体查询时,如何将 4x3 网格转换为 3x4 网格?

如何让 CSS 媒体查询与 jQuery $(window).innerWidth() 一起使用?

如何进行平滑的媒体查询来回转换?

如何使用最大宽度的媒体查询:767px 首先使用 Bootstrap 4 移动设备