javascript - 使用 matchMedia,调整窗口大小以修复响应式浏览边缘情况
问题描述
非常感激任何的帮助。
我将网站导航隐藏在切换样式的汉堡菜单后面。对于拥有屏幕/设备的用户@media only screen and (max-width: 750px)
其他所有人,导航始终存在。
当您将桌面浏览器调整大小/缩小为移动查询时,单击汉堡菜单并将其隐藏。然后展开窗口;导航隐藏在大屏幕上。
我使用 mediaMatch 编写了一个小脚本;强迫它的出现。但是,当这两个条件都为真时,它不会运行。
控制台输出 - 分别检查两个条件
mql.matches && getStyle('.header_burger_container', 'display') === 'none'
真的
const getStyle = (el, at) => {
let get = document.querySelector(el);
let style = getComputedStyle(get).getPropertyValue(at);
return style;
}
let mql = window.matchMedia('(min-width: 751px)');
window.addEventListener('resize', function() {
if (mql.matches == 'true' && getStyle('.header_burger_container', 'display') === 'none') {
document.querySelector('.header_burger_container').style.display = 'block';
document.querySelector('.header_burger_container ul').style.display = 'block';
}
}, false);
你有什么建议可以解决这个问题吗?
解决方案
我解决了这个问题;说真的,我不确定为什么我的解决方案有效。:s
第一次将函数体与事件侦听器分开。
const res_nav_resize = () => {
if (mql.matches && getStyle('.header_burger_container', 'display') === 'none') {
document.querySelector('.header_burger_container').style.display = 'block';
document.querySelector('.header_burger_container ul').style.display = 'block';
}
}
window.addEventListener('resize', res_nav_resize);
灵感来自Mozilla window.resize文档。
推荐阅读
- python - python库中的FIFO类?
- symfony - 是否可以在 vue js 内部使用 symfony 翻译?
- reactjs - React 网站真的很慢而且按钮不起作用
- android - 带有动态标题的列表视图复选框颤动
- javascript - Collections.js:SortedSet 不能包含不可比较但不相等的值:[object Object] 和 [object Object]
- django - 如何在我的数据库中添加数据以使用 django 和 DRF
- python - 有没有人有python代码将文件夹中的所有mp4文件转换为mp3?
- python - 如何在各自的行中组合来自不同列表的数据?
- react-native - 包裹在 React.Component 中时不会调用 onStateChange
- spring - 如何使用 Keycloak Adapter 设置 Spring Cloud Gateway?