正确的方法是使用以下方法收听媒体查询MediaQueryList
:
var mql = window.matchMedia("(max-width: 320px)");
mql.addListener(function(event) {
if(event.matches) {
// Window width is less than or equal to 320, do something cool.
} else {
// Window width is more than 320, do something else.
}
});
当查询被满足或“未满足”时,事件将触发。
或者,您可以收听调整大小事件,但请注意您的函数将为每个新维度触发。(假设在下面的代码中使用 jQuery。)
$(window).resize(function() {
if($(window).width() <= 320) {
// Window width is less than or equal to 320, do something cool.
} else {
// Window width is more than 320, do something else.
}
});
就像您自己说的那样,通常不建议使用 JS 使您的布局具有响应性。您永远不能假设您的所有用户都启用了 JS 并且一切顺利。
我宁愿看到你通过重组 HTML 和 CSS 来解决这个问题。如果内容布局必须更改很多,请尝试在 HTML 中的两个不同位置输出一个内容块,并使用 CSS 媒体查询切换可见性(将一个设置为display:none;
,另一个设置为display:block;
)。您应该能够通过重新考虑您的网站结构来解决大多数响应式布局问题。