在Javascript事件侦听器中包含CSS媒体查询

在Javascript事件侦听器中包含CSS媒体查询,javascript,css,media-queries,Javascript,Css,Media Queries,我有一段javascript代码,可以在我的网站顶部导航。见下文: <script> function init() { window.addEventListener('scroll', function(e){ var distanceY = window.pageYOffset || document.documentElement.scrollTop, shrink

我有一段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>

如果您有任何关于如何组合这些内容的帮助,我们将不胜感激。

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

// 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 ]] 
      }

    }

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

// 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 ]] 
      }

    }

您可以覆盖在
max width
媒体查询中添加的类的样式,因此不需要额外的javascript。或者在不重写的情况下,您可以仅在较大的媒体查询中应用类样式,即
minwidth:768px
谢谢。仔细看,我意识到这可以通过媒体查询覆盖来实现,就像你说的那样。你可以覆盖在
max width
媒体查询中添加的类的样式,因此不需要额外的javascript。或者在不重写的情况下,您可以仅在较大的媒体查询中应用类样式,即
minwidth:768px
谢谢。仔细看,我意识到这可以通过媒体查询覆盖,就像你说的。谢谢。我可以通过使用上面James建议的媒体查询覆盖来解决这个问题,而不是添加额外的JavaScript代码。谢谢。我可以通过使用上面James建议的媒体查询覆盖来解决这个问题,而不是添加额外的JavaScript代码。