Javascript 如何在jquery和css中使用带幻灯片切换菜单的媒体查询

Javascript 如何在jquery和css中使用带幻灯片切换菜单的媒体查询,javascript,jquery,html,css,Javascript,Jquery,Html,Css,对JS来说有点新。我有一个典型的带有汉堡按钮的响应菜单。它可以正确切换,但如果切换到不显示菜单并切换到更大的屏幕,则即使我的媒体查询默认为显示:块,菜单也不会显示。 当我打开菜单时也是一样的。如果我以较小的分辨率打开菜单,它将在较大的屏幕上显示我的菜单。无论屏幕分辨率如何,my.expand类都会保持不变,并且不会默认为my media query设置 我该如何解决这个问题?这是我的代码,我将post-css与mixin(scs和媒体查询)结合使用,并将ES6类用于JS(我想这是一种非正统的做法

对JS来说有点新。我有一个典型的带有汉堡按钮的响应菜单。它可以正确切换,但如果切换到不显示菜单并切换到更大的屏幕,则即使我的媒体查询默认为显示:块,菜单也不会显示。

当我打开菜单时也是一样的。如果我以较小的分辨率打开菜单,它将在较大的屏幕上显示我的菜单。无论屏幕分辨率如何,my.expand类都会保持不变,并且不会默认为my media query设置

我该如何解决这个问题?这是我的代码,我将post-css与mixin(scs和媒体查询)结合使用,并将ES6类用于JS(我想这是一种非正统的做法,但正在试验)

CSS

.primary-nav {
  position: relative;
  font-size: 1rem;
  top: 0;
  left: 0;
  -webkit-transform: translate(0,-10%);
          transform: translate(0,-10%);
  display: none;
}

@media (min-width: 340px) {
    .primary-nav .expand {
      display: block;
    }
  }

@media (min-width: 650px) {

.primary-nav {
    display: none;
    font-size: 1rem;
    top: 0;
    left: 0;
    -webkit-transform: translate(0,-10%);
            transform: translate(0,-10%)
}

    .primary-nav .expand {
      display: block;
    }
  }

@media (min-width: 1200px) {

.primary-nav {
    display: block;
    font-size: 1rem;
    height: 5vh;
    top: 0;
    left: 4rem
}
  }

@media (min-width: 1920px) {

.primary-nav {
    font-size: 1.2rem;
    height: 7vh;
    display: block;
    top: 1rem;
    left: 0;
    padding: 1rem
}
  }

.primary-nav ul {
    margin: 0;
    text-align: center;
    width: 100%;
    padding: 0;
  }

@media (min-width: 1200px) {

.primary-nav ul {
      padding: 0
  }
  }

.primary-nav li {
    display: block;
    border-bottom: 1px solid #FF00A2;
  }

@media (min-width: 1200px) {

.primary-nav li {
      display: inline;
      padding-left: 2%;
      border-bottom: none
  }
  }

@media (min-width: 1920px) {

.primary-nav li {
      padding-left: 5%
  }
  }

.primary-nav li:last-child {
    border-bottom: none;
  }

.primary-nav a {
    text-decoration: none;
    color: rgb(46, 198, 218);
    display: inline-block;
    padding: 5px;
  }

@media (min-width: 650px) {

.primary-nav a {
      padding: 8px
  }
  }


 //postcss with mixins 
.primary-nav {
      position: relative;
      font-size: 1rem;
      top: 0;
      left: 0;
      transform: translate(0,-10%);
      display: none;

      .expand {
        display: block;
      }


      @mixin atMedium {
        display: none;
        font-size: 1rem;
        top: 0;
        left: 0;
        transform: translate(0,-10%);
      }

      @mixin atLarge {
        display: block;
        font-size: 1rem;
        height: 5vh;
        top: 0;
        left: 4rem;
      }

      @mixin atXLarge {
        font-size: 1.2rem;
        height: 7vh;
        display: block;
        top: 1rem;
        left: 0;
        padding: 1rem;

      }

      ul {
        margin: 0;
        text-align: center;
        width: 100%;
        padding: 0;


        @mixin atLarge {
          padding: 0;
        }
      }


      li {
        display: block;
        border-bottom: 1px solid $hotPink;

        @mixin atLarge {
          display: inline;
          padding-left: 2%;
          border-bottom: none;
        }

        @mixin atXLarge {
          padding-left: 5%;
        }
      }

      li:last-child {
        border-bottom: none;
      }

      a {
        text-decoration: none;
        color: $mainTeal;
        display: inline-block;
        padding: 5px;

        @mixin atMedium {
          padding: 8px;
        }
      }
    }
import $ from 'jquery';

class MobileMenu {
  // dom selection usually and firing events when a page loads.
  constructor(){
    this.menuButton = $('.mobile-menu');
    this.events();
  }

  //events to watch for such as click
  events(){

    this.menuButton.on('click', function(){

        $('.primary-nav').slideToggle(400, function() {
          $(this).toggleClass('.expand');
          // console.log('hello');
        });

    });

  }

}

export default MobileMenu;
JS

.primary-nav {
  position: relative;
  font-size: 1rem;
  top: 0;
  left: 0;
  -webkit-transform: translate(0,-10%);
          transform: translate(0,-10%);
  display: none;
}

@media (min-width: 340px) {
    .primary-nav .expand {
      display: block;
    }
  }

@media (min-width: 650px) {

.primary-nav {
    display: none;
    font-size: 1rem;
    top: 0;
    left: 0;
    -webkit-transform: translate(0,-10%);
            transform: translate(0,-10%)
}

    .primary-nav .expand {
      display: block;
    }
  }

@media (min-width: 1200px) {

.primary-nav {
    display: block;
    font-size: 1rem;
    height: 5vh;
    top: 0;
    left: 4rem
}
  }

@media (min-width: 1920px) {

.primary-nav {
    font-size: 1.2rem;
    height: 7vh;
    display: block;
    top: 1rem;
    left: 0;
    padding: 1rem
}
  }

.primary-nav ul {
    margin: 0;
    text-align: center;
    width: 100%;
    padding: 0;
  }

@media (min-width: 1200px) {

.primary-nav ul {
      padding: 0
  }
  }

.primary-nav li {
    display: block;
    border-bottom: 1px solid #FF00A2;
  }

@media (min-width: 1200px) {

.primary-nav li {
      display: inline;
      padding-left: 2%;
      border-bottom: none
  }
  }

@media (min-width: 1920px) {

.primary-nav li {
      padding-left: 5%
  }
  }

.primary-nav li:last-child {
    border-bottom: none;
  }

.primary-nav a {
    text-decoration: none;
    color: rgb(46, 198, 218);
    display: inline-block;
    padding: 5px;
  }

@media (min-width: 650px) {

.primary-nav a {
      padding: 8px
  }
  }


 //postcss with mixins 
.primary-nav {
      position: relative;
      font-size: 1rem;
      top: 0;
      left: 0;
      transform: translate(0,-10%);
      display: none;

      .expand {
        display: block;
      }


      @mixin atMedium {
        display: none;
        font-size: 1rem;
        top: 0;
        left: 0;
        transform: translate(0,-10%);
      }

      @mixin atLarge {
        display: block;
        font-size: 1rem;
        height: 5vh;
        top: 0;
        left: 4rem;
      }

      @mixin atXLarge {
        font-size: 1.2rem;
        height: 7vh;
        display: block;
        top: 1rem;
        left: 0;
        padding: 1rem;

      }

      ul {
        margin: 0;
        text-align: center;
        width: 100%;
        padding: 0;


        @mixin atLarge {
          padding: 0;
        }
      }


      li {
        display: block;
        border-bottom: 1px solid $hotPink;

        @mixin atLarge {
          display: inline;
          padding-left: 2%;
          border-bottom: none;
        }

        @mixin atXLarge {
          padding-left: 5%;
        }
      }

      li:last-child {
        border-bottom: none;
      }

      a {
        text-decoration: none;
        color: $mainTeal;
        display: inline-block;
        padding: 5px;

        @mixin atMedium {
          padding: 8px;
        }
      }
    }
import $ from 'jquery';

class MobileMenu {
  // dom selection usually and firing events when a page loads.
  constructor(){
    this.menuButton = $('.mobile-menu');
    this.events();
  }

  //events to watch for such as click
  events(){

    this.menuButton.on('click', function(){

        $('.primary-nav').slideToggle(400, function() {
          $(this).toggleClass('.expand');
          // console.log('hello');
        });

    });

  }

}

export default MobileMenu;
HTML

<span class="mobile-menu">
        <i class="fas fa-bars"></i>
      </span>

      <nav class="primary-nav col col--md-8 col--lg-8">
        <ul>
          <li><a href="#hero">Project How To</a></li>
          <li><a href="#faq" >Rules/Terms</a></li>
          <li><a href="#blog" >Blog</a></li>
          <li><a href="#account">My Account</a></li>
          <li><a href="#log" >Log In</a></li>
          <li><a href="#"><i class="icons icons--cart fas fa-shopping-cart "></i></a></li>
        </ul>
      </nav>


请原谅,我的导航菜单附近有一个徽标,我必须相应地进行调整

你也可以添加编译后的CSS吗?我已经添加了编译后的CSS。如果还不清楚,请告诉我。这是一个大文件,所以我试着挑出我最初发布的相同行。你确定它已经完全编译好了吗?仍然有
@mixins
。还有一件事你能把你的代码变成一个?您可以使用带有括号的按钮