【问题标题】:Mobile Hamburger Menu 2 div's to close/open menuMobile Hamburger Menu 2 div 关闭/打开菜单
【发布时间】:2021-08-27 07:39:55
【问题描述】:

尝试创建一个汉堡菜单,但使用两个单独的 div 类使用 javascript 打开和关闭菜单。我不确定如何实现这一点,下面是 HTML 和 CSS 相关的。 我想要实现的是使用.Menu-Icon 打开菜单和.Close 关闭菜单。 该网站可在此处访问:https://blacklist-rs.com/design/

非常感谢任何帮助,谢谢! 请注意,这不是文件中编码的格式。片段是相关的代码。

.nav-container {
  position: absolute;
  top: 0px;
  left: 0px;
  width: 340px;
  height: 100%;
  background-color: #000;
  transform: translate(-340px, 0);
  -webkit-transform: translateY(-340px, 0);
  -ms-transform: translateY(-340px, 0);
  transition: all 0.5s;
}


/* Mobile CSS */

@media only screen and (max-width: 1276px) {
  .header .menu-icon {
    left: 75px;
    top: 46px;
    position: absolute;
    width: 30px;
    height: 30px;
    background-image: url(../img/menu.svg);
    background-repeat: no-repeat;
    cursor: pointer;
  }
  .header .logo {
    position: absolute;
    left: 75px;
    transform: scale(0.5);
    margin-left: 0px;
    top: 15px;
  }
  .nav-2 {
    display: none;
  }
  .nav {
    position: fixed;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
    z-index: 99999;
    visibility: hidden;
  }
}
<div class="nav-2">
  <div class="main-menu">
    <ul class="menu">
      <li><a href="#home">HOME</a></li>
      <li><a href="#services">SERVICES</a></li>
      <li><a href="#projects">OUR PROJECTS</a></li>
      <li><a href="#contact">CONTACT</a></li>
  </div>
</div>
<div class="menu-icon"></div>
<div class="logo"></div>
<div class="nav">
  <div class="nav-bg-close"></div>
  <div class="nav-container">
    <div class="close"></div>
    <div class="main-menu">
      <ul class="menu">
        <li><a href="#home">Home</a> </li>
        <li><a href="#about">About</a> </li>
        <li><a href="#services">Services</a> </li>
        <li><a href="#contact">Contact</a> </li>
      </ul>
    </div>
  </div>
</div>

【问题讨论】:

    标签: javascript html css


    【解决方案1】:

    你可以在脚本标签中添加它,或者用 defer 属性链接一个 js 文件。

    document.querySelector('.menu-icon').addEventListener('click', () => {
        document.querySelector('.nav-container').classList.toggle('nav-open')
    })
    

    它将一个类切换到导航,编写使您导航打开的样式作为名为 nav-open 的类。只需确保在封闭式导航的样式下方编写开放式导航的样式即可。这将确保封闭的样式被覆盖。

    【讨论】:

    • 感谢您的评论!在您发表评论之前,我实际上尝试过摆弄特定的 JavaScript 代码。不幸的是,您和我的代码没有切换任何类。这可能是由于我的 css,但完全不确定。
    • 如果它没有切换一个类,要么 querySelector 从 DOM 中获取了错误的项目,要么你的 js 没有运行。如果它得到错误的项目,您将在控制台中看到错误。否则,您的代码无法运行。您的控制台告诉我们什么?
    • 实用建议:在您的脚本中,编写:console.log('Script is running') 如果您在控制台中看到消息,则运行脚本。然后,确保选择器内的类名是正确的。
    • 那么问题解决了吗?问题不在于 js(除非您更改了类)。问题是脚本在加载DOM之前运行,在链接头中的js文件时使用defer标签。
    • 为延长聊天道歉。出于某种原因,非常感谢您的帮助。在将菜单图标更改为 id 而不是类之后,您的代码也设法工作。这现在有效,但是由于隐藏在移动查询 css 中的可见性,导航容器是不可见的。如果我删除可见性,菜单会显示为静态框。即使未触发事件,它也会自动打开。我会更新我的网站,以便您查看。 blacklist-rs.com/design
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 2019-08-26
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多