javascript - 纯 JS 基础断点更改事件监听器
问题描述
基础文档使用 JQuery 监听断点变化
https://get.foundation/sites/docs/media-queries.html
$(window).on('changed.zf.mediaquery', function(event, newSize, oldSize) {
if (
(oldSize === "small" && newSize === "large") ||
(oldSize === "small" && newSize === "xxlarge") ||
(oldSize === "medium" && newSize === "large") ||
(oldSize === "medium" && newSize === "xxlarge")
) {
//my custom function
displayFacets("desktop");
} else if (
(oldSize === "xxlarge" && newSize === "small") ||
(oldSize === "large" && newSize === "small") ||
(oldSize === "large" && newSize === "medium") ||
(oldSize === "xxlarge" && newSize === "medium")
) {
displayFacets("mobile");
}
});
如何在纯 JS 中转换它?
解决方案
目前还不清楚你到底在想什么。但是您可以使用matchMedia实现类似的目标。例如,您可以创建一个 EventListener 来响应某个 MediaQuery 是否匹配。请参阅此示例:https ://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/onchange
编辑:好的,在您对示例进行更改后,可以看出您实际上只想区分移动设备和桌面设备。您可以使用提到的功能很容易地实现这一点:
const mql = window.matchMedia('(max-width: 600px)');
mql.onchange = (e) => {
if (e.matches) {
/* the viewport is 600 pixels wide or less */
displayFacets("mobile");
} else {
/* the viewport is more than than 600 pixels wide */
displayFacets("desktop");
}
}
推荐阅读
- xcode - 有没有办法在同一个 iOS Xcode 项目中使用故事板和 SwiftUI?
- php - FPDF:如何使用冒号符号₡
- laravel - 使用 Laradock 在同一个 VPS 中运行两个不同的项目
- node.js - 我可以在没有 CloudLinux 的情况下在 cPanel 上运行 Node.js 吗?
- python - 熊猫根据时间戳合并
- python - 如何在熊猫中按天和月分组?
- swiftui - 以非模态方式呈现视图
- bash - 如何在 bash 脚本中的远程服务器上使用 SSH 运行多个命令?
- c++ - Visual Studio 测试资源管理器找不到我的 Boost 测试
- r - 查找没有包的 1:n 数字的所有唯一组合