javascript 点击后汉堡菜单不会消失

wko9yo5t  于 2023-08-02  发布在  Java
关注(0)|答案(2)|浏览(137)

我正面临着汉堡菜单的问题。我想让它消失后,点击菜单的位置和远离菜单以及。我是初学者。先谢谢你。
CSS

.burger {
    display: block;
    transition: 0.3s ease-out;
  }

  .burger.active .line:first-child {
    transform: translateX(+300px);
  }

  #menu {
    display: flex;
    position: absolute;
    right: 0;
    flex-direction: column;
    top: 100px;
    height: 400px;
    text-align: center;
    width: 75%;
    z-index: 1;
    transform: translateX(100%);
    transition: 0.3s ease-out;
  }

  #menu.active {
    transform: translateX(0%);
    transition: 0.3s ease-out;
  }

  #menu li {
    font-weight: 500;
    font-size: 28px;
    line-height: normal;
  }

  #menu li a {
    color: #ffffff;
    text-decoration: none;
  }

字符串
JavaScript

document.querySelectorAll(".filterable_cards img").forEach((image) => {
        image.onclick = () => {
          document.querySelector(".popup-image").style.display = "block";
          document.querySelector(".popup-image img").src =
            image.getAttribute("src");
        };
      });


超文本标记语言

<ul id="menu">
      <li><a href="#home">Home</a></li>
      <li><a href="#about">O mnie</a></li>
      <li><a href="#graphics">Grafika</a></li>
      <li><a href="#contact">Kontakt</a></li>
    </ul>
    <div class="burger">
      <div class="line"></div>
      <div class="line"></div>
      <div class="line"></div>
    </div>


主要是我需要一个帮助的JavaScript代码,我认为。

mwkjh3gx

mwkjh3gx1#

您似乎想在单击菜单项后隐藏汉堡菜单。您可能需要在每个菜单项上添加一个事件侦听器,并在单击菜单项时切换active类。以下是您可以如何做到这一点:

// JavaScript

// Get the menu items and burger element
let menuItems = document.querySelectorAll('#menu li a');
let burger = document.querySelector('.burger');

// Add an event listener to each menu item
menuItems.forEach((item) => {
  item.addEventListener('click', () => {
    // When a menu item is clicked, remove 'active' class from #menu and burger
    document.querySelector('#menu').classList.remove('active');
    burger.classList.remove('active');
  });
});

// Add click event for the burger menu
burger.addEventListener('click', () => {
  // On click, toggle 'active' class for #menu and burger
  document.querySelector('#menu').classList.toggle('active');
  burger.classList.toggle('active');
});

字符串
也可以在单击外部时隐藏菜单:

// JavaScript

document.addEventListener('click', (event) => {
    let isClickInsideMenu = document.querySelector('#menu').contains(event.target);
    let isClickOnBurger = burger.contains(event.target);

    if (!isClickInsideMenu && !isClickOnBurger) {
        // The click was outside the menu and burger, hide them
        document.querySelector('#menu').classList.remove('active');
        burger.classList.remove('active');
    }
});


上面的代码将跟踪每个菜单项上的单击事件。当检测到单击事件时,它将从菜单和汉堡包按钮中删除活动类,使它们隐藏起来。.active类中的更改将影响CSS transform属性,从而提供滑入/滑出动画。
我建议将此JavaScript代码添加到HTML body标记的末尾,或者将其放置在DOMContentLoaded事件之后调用的函数中,以确保在脚本运行之前所有元素都已呈现到DOM。
祝你学习愉快。

hfwmuf9z

hfwmuf9z2#

const burger = document.querySelector(".burger");
const menu = document.querySelector("#menu");

burger.addEventListener("click", () => {
  menu.classList.toggle("active");
});

document.addEventListener("click", (event) => {
  if (event.target === burger || event.target === menu) {
    return;
  }

  menu.classList.remove("active");
});

字符串

相关问题