javascript - 如何根据屏幕大小将事件监听器附加到 DOM

标签 javascript html css dom ecmascript-6

例如:document.body.addEventListener('wheel', foo, {passive: true}); 如果屏幕尺寸大于 500px

,则应动态添加/删除

最佳答案

正如@Rounin 所说,window.matchMedia 相当于 CSS @media 查询。但最酷的部分不仅仅是您可以使用 .matches 进行检查——最棒的是,您可以添加一个事件监听器,它会在状态更改时触发。

当屏幕宽度超过或低于 500px 时,您希望发生某些事情 -- 您希望在屏幕大于 500px 时添加鼠标滚轮监听器,并在屏幕小于 500px 时将其移除

您还必须首先检查 .matches 以决定是否在您的页面首次加载时添加监听器,如@Rounin 所示,但随后可以自动添加和删除监听器基于匹配媒体查询。

let widthMatch = window.matchMedia("(min-width: 500px)");
// mm in the function arg is the matchMedia object, passed back into the function
widthMatch.addEventListener('change', function(mm) {
    if (mm.matches) {
        // it matches the media query: that is, min-width is >= 500px
        document.body.addEventListener( etc. );
    }
    else {
        // it no longer matches the media query
        // remove the event listener
    }
});

关于javascript - 如何根据屏幕大小将事件监听器附加到 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45947570/

相关文章:

javascript - 找不到用于排序/更改 <div> 结构的 Jquery 脚本,有什么想法吗?

javascript - 带有 Express 应用程序生成器的 Webpack

jquery - 根据所选语言更改字体大小或 div 类

html - Flash 上的 anchor 标记在 Chrome 中不起作用

css - 结合两个媒体查询

javascript - 在 javascript 中将选项对象添加到 2 个选择框

javascript - 获取真实设备的屏幕尺寸

javascript - 单击 td 时更改 bgcolor?

html - 所有页面上的CSS @page background-images?

google-chrome - Chrome - child 剪辑CSS3圆形边框?