如果屏幕宽度小于 960 像素,请执行某些操作

IT技术 javascript jquery
2021-02-03 13:39:37

如果我的屏幕宽度小于 960 像素,我如何让 jQuery 做一些事情?无论我的窗口大小如何,下面的代码总是会触发第二个警报:

if (screen.width < 960) {
    alert('Less than 960');
}
else {

    alert('More than 960');
}
6个回答

使用 jQuery 获取窗口的宽度。

if ($(window).width() < 960) {
   alert('Less than 960');
}
else {
   alert('More than 960');
}
@forsvunnet 该链接已失效。
2021-03-16 13:39:37
请注意,如果滚动条可见,则 $(window).width() 跨浏览器不一致。我发现使用javascript 媒体查询要可靠得多。
2021-04-08 13:39:37
javascript 媒体查询链接:w3schools.com/howto/howto_js_media_queries.asp
2021-04-11 13:39:37

您可能希望将其与调整大小事件结合使用:

 $(window).resize(function() {
  if ($(window).width() < 960) {
     alert('Less than 960');
  }
 else {
    alert('More than 960');
 }
});

对于 RJ:

var eventFired = 0;

if ($(window).width() < 960) {
    alert('Less than 960');

}
else {
    alert('More than 960');
    eventFired = 1;
}

$(window).on('resize', function() {
    if (!eventFired) {
        if ($(window).width() < 960) {
            alert('Less than 960 resize');
        } else {
            alert('More than 960 resize');
        }
    }
});

我尝试了http://api.jquery.com/off/ 但没有成功,所以我使用了 eventFired 标志。

包装在 resize 事件中只会使其在调整大小时触发,而不是在加载时触发。
2021-03-13 13:39:37
在该代码之后添加一个调整大小事件是有意义的,这样无论浏览器的当前大小是什么,它都会在加载时运行所需的代码
2021-03-18 13:39:37
@Ted 这就是我说的原因combine it with
2021-03-21 13:39:37
太棒了,我几天来一直试图弄清楚如何equalHeights在调整大小时绑定一个函数,但仅适用于大于 768 的宽度。这就像一个魅力。谢谢
2021-03-25 13:39:37
@RJ 见上面的编辑。我不知道您所说的“清除”事件是什么意思,所以我继续防止事件再次触发。
2021-03-25 13:39:37

我建议不要将 jQuery 用于这样的事情并继续window.innerWidth

if (window.innerWidth < 960) {
    doSomething();
}
@raison 我发现 $(window).width() 不包括滚动条 - 所以如果你有一个 960px 的屏幕,它会返回 944px 并且你的 js 不会按预期触发。此解决方案将返回 960px
2021-03-18 13:39:37
@raison 如果不需要,为什么要使用 jQuerry?它带来了额外的问题......
2021-03-23 13:39:37
为什么最好不要使用 jQuery?
2021-03-30 13:39:37
这可能是这里最好的解决方案
2021-03-30 13:39:37
这应该是答案,因为不包括滚动条,因此它可以与 CSS 中的媒体查询结合使用。
2021-04-03 13:39:37

您还可以使用带有 javascript 的媒体查询。

const mq = window.matchMedia( "(min-width: 960px)" );

if (mq.matches) {
       alert("window width >= 960px");
} else {
     alert("window width < 960px");
}
// Adds and removes body class depending on screen width.
function screenClass() {
    if($(window).innerWidth() > 960) {
        $('body').addClass('big-screen').removeClass('small-screen');
    } else {
        $('body').addClass('small-screen').removeClass('big-screen');
    }
}

// Fire.
screenClass();

// And recheck when window gets resized.
$(window).bind('resize',function(){
    screenClass();
});