【问题标题】:Include CSS Media Query in Javascript Event Listener在 Javascript 事件侦听器中包含 CSS 媒体查询
【发布时间】:2018-01-21 21:58:57
【问题描述】:

我有这个 javascript 代码可以使我的网站的顶部导航缩小。见下文:

<script>
        function init() {
            window.addEventListener('scroll', function(e){
                var distanceY = window.pageYOffset || document.documentElement.scrollTop,
                    shrinkOn = 300,
                    header = document.querySelector("header");
                if (distanceY > shrinkOn) {
                    classie.add(header,"smaller");
                } else {
                    if (classie.has(header,"smaller")) {
                        classie.remove(header,"smaller");
                    }
                }
            });
        }
        window.onload = init();
    </script>

当窗口向下滚动指定距离时,代码将“smaller”类添加到标题部分,并在向上滚动时缩小它。 但是,我希望仅在屏幕大于 768 像素(即最小宽度:768 像素)时添加和删除该类。在较小的屏幕尺寸上,我不希望添加和删除类起作用。

我看到了一个要使用的代码示例,但我不知道如何将它添加到我上面的代码中。

// media query event handler
if (matchMedia) {
  const mq = window.matchMedia("(min-width: 500px)");
  mq.addListener(WidthChange);
  WidthChange(mq);
}

// media query change
function WidthChange(mq) {
  if (mq.matches) {
    // window width is at least 500px
  } else {
    // window width is less than 500px
  }

}

任何关于如何组合的帮助将不胜感激。

【问题讨论】:

  • 您可以覆盖max-width 媒体查询中添加的类的样式,因此无需额外的javascript。或者没有覆盖,您可以仅在较大的媒体查询中应用类样式,即min-width: 768px
  • 谢谢詹姆斯。仔细一看,我意识到这可以通过您所说的媒体查询覆盖来实现。

标签: javascript css media-queries


【解决方案1】:

根据您的描述,您希望在条件中添加现有代码,因此:

// media query event handler
    if (matchMedia) {
      const mq = window.matchMedia("(min-width: 768px)");
      mq.addListener(WidthChange);
      WidthChange(mq);
    }

    // media query change
    function WidthChange(mq) {
      if (mq.matches) {
        [[ YOUR CODE ]]
      } else {
       [[ UNBIND SCROLL LISTENER ]] 
      }

    }

【讨论】:

  • 谢谢。我能够通过像上面 James 建议的那样使用媒体查询覆盖来解决这个问题,而不是添加额外的 JavaScript 代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-25
相关资源
最近更新 更多