首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用setTimeout与媒体查询连续处理不同屏幕分辨率

使用setTimeout与媒体查询连续处理不同屏幕分辨率
EN

Stack Overflow用户
提问于 2022-12-04 18:12:11
回答 2查看 22关注 0票数 -1

我正在努力使我的网站响应。目前,我每100 of使用一次setTimeout来检查屏幕宽度,并相应地检查布局,而不是媒体查询。这是一个糟糕的方法,还是javascript能够处理这个问题,因为它是一个小网站?

代码语言:javascript
复制
function screen() {
    var screenWidth = window.innerWidth;
    if(screenWidth < 1100) {
        if(!sidebar.classList.contains('open'))
            sidebar.style.display = 'none';
        hamburger.style.display = 'flex';
    } else {
        sidebar.style.display = 'block';
        hamburger.style.display = 'none';
    }

    setTimeout(screen, 100);
}

screen();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-12-04 18:34:29

让css引擎为您应用媒体查询是更易读、更高效的方法

但是如果您不能使用它,最好使用matchMedia

代码语言:javascript
复制
const sidebar = document.querySelector('nav')
const hamburger = document.querySelector('button')
const mql = matchMedia('(max-width: 1100px)')
handleChange(mql)
mql.addEventListener('change', handleChange)

function handleChange(e) {
  if (e.matches) {
    if (!sidebar.classList.contains('open'))
      sidebar.style.display = 'none';
    hamburger.style.display = 'flex';
  } else {
    sidebar.style.display = 'block';
    hamburger.style.display = 'none';
  }
}
代码语言:javascript
复制
<button>-</button>
<nav>test</nav>

票数 0
EN

Stack Overflow用户

发布于 2022-12-04 18:15:59

使用setTimeout每100 is检查一次屏幕宽度并不是让任何网站响应的好方法。相反,您应该使用CSS中的媒体查询来指定您的网站应该如何查看不同的屏幕大小。这将允许浏览器自动调整您的网站布局时,屏幕大小的变化,而不需要不断轮询屏幕宽度使用JavaScript。使用媒体查询是使网站响应的更好方法,因为它比经常使用JavaScript轮询屏幕宽度更高效、更易于维护和更方便用户。

以下是您可以用来了解有关使用媒体查询使您的网站响应的更多信息的几个来源:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74679538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档