Javascript @media min size - 仅在特定窗口大小时激活

时间:2016-08-29 17:05:41

标签: javascript css

我有一个javascript,我只想在窗口大小为1326px的最小值时才能工作

这就是我所做的,但它不起作用。无论窗口大小如何,脚本都会运行。

如果你看前两行,那就是我以前尝试检测窗口大小的方法。

var mq = window.matchMedia( "(min-width: 1326px)" );
if (mq.matches)
    {
    function openNav() {
        document.getElementById("mySidenav").style.width = "250px";
        document.getElementById("sidebar-loc").style.marginLeft = "250px";
    }
    function closeNav() {
        document.getElementById("mySidenav").style.width = "0";
    document.getElementById("sidebar-loc").style.marginLeft= "0";
    }
    ( function($) {
    $(document).ready(function () {
        slider();
    });
    } ) ( jQuery );
    ( function($) {
    $(window).scroll(function () {
    slider();
    });
    } ) ( jQuery );
    function slider() {
        if (document.body.scrollTop > 700)
            ( function($) {
            $('#sliderr').stop().animate({"margin-left": '0'});
            } ) ( jQuery );
        else
            ( function($) {
            $('#sliderr').stop().animate({"margin-left": '-200'});
            } ) ( jQuery );
    }
    (jQuery);
    ( function($) {
    $(document).ready( function() {
        $("#show_arrow").hide(); //hide your div initially
        $(window).scroll(function() {
            if($(window).scrollTop() > 700) { //scrolled past the other div?
                $("#show_arrow").show(); //reached the desired point -- show div
            }
            else($(window).scrollTop() < 700) 
                $("#show_arrow").hide();
        });
    });
    } ) ( jQuery );
    }

2 个答案:

答案 0 :(得分:1)

您需要添加一个监听器

有点像这样

if (matchMedia) {
  var mq = window.matchMedia("(min-width: 1326px)");
  mq.addListener(WidthChange);
  WidthChange(mq);
}

答案 1 :(得分:0)

这不起作用,因为您只检查代码运行时媒体查询是否匹配一次。

解决方案是将整个代码包装在mq.addListener(function (e) { code })中。 e对象也具有属性.matches,或者您仍然可以使用mq.matches,也可以在更改时更新。{/ p>

另请注意,此功能仍然是工作草案,并且是not supported in some older browsers。如果您希望在这些浏览器中获得支持,则必须侦听窗口大小调整事件,并根据窗口宽度确定媒体查询是否匹配。