移动导航在jQuery中具有怪异的过渡效果,并且无法正确显示

时间:2018-08-16 11:37:45

标签: javascript jquery html css

我创建了一个模板,该模板在桌面中具有水平导航,而在移动设备中具有垂直导航。我正在使用一个导航列表,并将其样式更改为台式机到移动设备。

问题是,我给它的jQuery给它添加了一些我想删除的奇怪过渡。文本和边栏的淡入/淡出效果以及怪异的滑入/滑出效果。

我要实现的目标是使移动导航滑入/滑出时宽度保持不变,而没有褪色效果。我认为toggle()类与它有关,但是我不确定。

此外,当您打开然后单击汉堡包以打开然后关闭移动导航时,然后转到查看桌面模式,桌面导航也将消失,直到刷新页面。

任何帮助都会很棒。谢谢。

$('.toggle-menu').click(function() {
  $('nav').toggle("nav");
});
:root {
  --black: #212121;
  --grey: #ccc;
  --light-grey: #eee;
  --grey-opacity: #ccc, 0.2;
  --gutter: 30px;
}

html,
body {
  min-height: 100%;
}

html {
  box-sizing: border-box;
  background-color: var(--grey);
}

body {
  font-family: 'Poppins', sans-serif;
  font-size: 14px;
  line-height: 1.3;
  color: var(black);
  margin: 0;
}

a {
  text-decoration: none;
  color: var(--black);
}

a:hover,
a:focus {
  color: var(--black);
}

ul {
  padding: 0;
}

ul li {
  display: inline;
  list-style-type: none;
}

.container {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-areas: "header" "aside content" "overview overview" "footer footer";
}

.header-skin {
  background-color: rgba(255, 255, 255, 0.1);
}

header {
  grid-area: header;
  display: flex;
  justify-content: space-between;
  padding: var(--gutter) 15px;
  max-width: 1200px;
  margin: 0 auto;
}

.toggle-menu span {
  width: 20px;
  height: 2px;
  margin-bottom: 4px;
  border-radius: 50px;
  background: var(--black);
  display: block;
}

@media (min-width: 839px) {
  .toggle-menu {
    display: none;
  }
  nav ul {
    margin: 0;
  }
  nav ul li {
    text-transform: capitalize;
    padding-left: 20px;
  }
  nav ul li a {
    position: relative;
  }
  nav ul li a.active {
    color: var(--black);
    font-weight: 700;
  }
  nav ul li a.active::after {
    content: ' ';
    width: 100%;
    height: 2px;
    display: block;
    position: absolute;
    left: 0;
    bottom: -4px;
    background-color: var(--black);
  }
  nav ul li:nth-child(4n) {
    margin-right: 200px;
  }
}

@media (max-width: 840px) {
  nav {
    height: 100%;
    position: fixed;
    background-color: rgba(255, 255, 255, 0.1);
    left: 0;
    top: 78px;
    width: 300px;
    margin-right: -300px;
    display: none;
  }
  nav ul {
    margin: 0;
    padding: 40px 0 0 40px;
    display: flex;
    flex-direction: column;
  }
  nav ul li {
    text-transform: capitalize;
    padding-bottom: 40px;
  }
  nav ul li a {
    position: relative;
  }
  nav ul li a.active {
    color: var(--black);
    font-weight: 700;
  }
  nav ul li a.active::after {
    content: ' ';
    width: 100%;
    height: 2px;
    display: block;
    position: absolute;
    left: 0;
    bottom: -4px;
    background-color: var(--black);
  }
  nav ul li:nth-child(4n) {
    margin-right: 200px;
  }
}
<div class="container">
  <div class="header-skin">
    <header>
      <div class="logo">
        <a href="index.html">logo</a>
      </div>

      <div class="toggle-menu">
        <span></span>
        <span></span>
        <span></span>
      </div>

      <nav>
        <ul>
          <li><a href="" class="active">home</a></li>
          <li><a href="">about</a></li>
          <li><a href="">news</a></li>
          <li><a href="">contact</a></li>
          <li><a href="">twitter</a></li>
          <li><a href="">instagram</a></li>
        </ul>
      </nav>
    </header>
  </div>

  <div class="aside"></div>

  <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  <script src="functions.js"></script>
</div>

0 个答案:

没有答案