JSFiddle - React, Tailwind, and code Playground

HTML

<nav>
  <ul class="main-menu">
    <li class="main-menu-li"><a href="">首頁</a></li>
    <li class="main-menu-li"><a href="">全部商品</a></li>
    <li class="main-menu-li"><a href="">全部品牌</a></li>
    <li class="main-menu-li">
      <span>關於我們</span>
      <ul class="sub-menu">
        <li><a href="">團隊介紹</a></li>
        <li><a href="">企業宗旨</a></li>
        <li><a href="">創業故事</a></li>
      </ul>
    </li>
  </ul>
</nav>

<h1 style="text-align: center;">JavaScript 系列三:練習6 ── dropdown 下拉式選單</h1>

CSS

* {
  padding: 0;
  margin: 0;
  list-style-type: none;
}

nav {
  width: 100%;
  text-align: center;
  background-color: #000;
}

nav .main-menu {
  font-size: 0;
}

nav .main-menu-li {
  display: inline-block;
  position: relative;
}

nav .sub-menu {
  font-size: 0;
  position: absolute;
  top: 100%;
  left: 0;
  display: none;
  background-color: #000;
}

nav .sub-menu.active {
  display: block;
}

nav a,
nav span {
  display: inline-block;
  padding: 5px 10px;
  text-decoration: none;
  color: #fff;
  transition: 0.3s;
  cursor: pointer;
  font-size: 16px;
}

nav a:hover,
nav span:hover {
  background-color: rgba(255, 234, 208, 1);
  color: #000;
}

JavaScript

let mainMenuLis = document.querySelectorAll(".main-menu-li");
for (let mainMenuLi of mainMenuLis) {
  mainMenuLi.onclick = showSubMenu;
}
window.onclick = closeSubMenu;

function showSubMenu() {
  let clickedMenu = event.target;
  let mainMenu = clickedMenu.closest(".main-menu-li");
  let subMenu = mainMenu.querySelector(".sub-menu");
  subMenu.classList.toggle("active");
}

function closeSubMenu() {
  let activeSubMenu = document.querySelector(".sub-menu.active");
  if (activeSubMenu) {
    let subMenuStarter = activeSubMenu.previousElementSibling;
    if (event.target !== subMenuStarter) {
      activeSubMenu.classList.remove("active");
    }
  }
}