导航中子菜单上的按钮

Button on submenu in nav

我想向我当前的导航栏添加下拉菜单。我试过这段代码,但下拉内容消失了,现在我没有任何想法来编辑代码以使其正常工作。在我最后一次编辑之后,它只显示下拉菜单,但我没有点击任何 link。 Dropdown, dropbtn 添加到之前的代码中。你能帮我吗?非常感谢!

代码如下:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="shortcut icon" type="image/x-icon" href="menu.png" />
<title>MENU | Úvodné menu</title>
<meta charset=utf-8>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<style>
body {
  height: 100%;
  
  background-image: linear-gradient(orange, red);
}
</style>
<style>
body,h1 {font-family: "Raleway", sans-serif}
body, html {height: 100%}
.bgimg {
  background-image: linear-gradient(orange, red);
  min-height: 100%;
  background-position: full;
  background-size: ;
}
</style>
<style>
* {box-sizing: border-box;}

body { 
  margin: 0;
  font-family: Arial, Helvetica, sans-serif;
}

.dropdown .dropbtn {
  font-size: 16px;  
  border: none;
  outline: none;
  color: white;
  padding: 14px 16px;
  background-color: inherit;
  font-family: inherit;
  margin: 0;
}



.header {
  overflow: hidden;
  background-color: orange;
  padding: 20px 10px;
}

.header a {
  float: left;
  color: white;
  text-align: center;
  padding: 12px;
  text-decoration: none;
  font-size: 18px; 
  line-height: 25px;
  border-radius: 4px;
}

.header a.logo {
  font-size: 25px;
  font-weight: bold;
}

.header a:hover {
  background-color: #ddd;
  color: black;
}

.header a.active {
  background-color: red;
  color: white;
}

.header-right {
  float: right;
}

@media screen and (max-width: 500px) {
  .header a {
    float: none;
    display: block;
    text-align: left;
  }
  
  .header-right {
    float: none;
  }
}


.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f9f9f9;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1;
}

.dropdown-content a {
  float: none;
  color: black;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
  text-align: left;
}

.dropdown-content a:hover {
  background-color: #ddd;
}
.dropdown {
  float: left;
  overflow: hidden;
}
.dropdown:hover .dropdown-content {
  display: block;
}
.dropbtn:hover ~ .dropdown-content {display: block;}
</style>
</head>
<body onload="startTime()">

<div class="header">
 <a id="txt" hidden></a>
<img src="https://i.ibb.co/6Nkbdb3/dlhemenu-1-1-1.png" class="logo" title="Odhlásiť sa" alt="MENU logo" width="150" height="50" onclick="window.location='/logout.php'"> 
 &nbsp
 <a class="dropbtn"><i class="fa fa-user">&nbsp</i>Dropdown 
      <i class="fa fa-caret-down"></i>
    </a>
    <div class="dropdown-content">
      <a href="#">Link 1</a>
      <a href="#">Link 2</a>
      <a href="#">Link 3</a>
    </div>   


    <div class="header-right">
    <a class="active" href="/welcome.php">Úvodné menu</a>
        <a href="/online.html">Online hodiny</a>
    <a href="/vyplnit.html">Testy na vyplnenie</a>
    <a href="/znamky3.html">Známky</a>
    <a href="/rozvrh.html">Rozvrh hodín</a>
     <a href="/dochadzka.html">Dochádzka</a>
      <a href="/ucenie.html">Učebný materiál</a>
       <a href="/hry.html">Hry</a>
  <a href="/omne.php">O mne</a>
  
  </div>
</div>

如果我正确理解你的问题,你是在寻找一个简单的带有 js 的下拉菜单吗?

这是一个简短的例子

HTML:

<html lang="en">
  <head>
    <!-- your header settings -->
    <link rel="stylesheet" href="page.css">
  </head>
  <body>
    <header>
      <span id="dropbtn">
        <span class="fa fa-user"></span>
        <span>Dropdown</span>
        <span class="fa fa-caret-down"></span>
      </span>
      <div id="dropdown-content" class="hidden">
        <a href="#">Link 1</a>
        <a href="#">Link 2</a>
        <a href="#">Link 3</a>
      </div>  
    </header>

    <script src="menu.js"></script>
  </body>
</html>

首先在这个例子中 HTML,CSS 和 JS 在单独的文件中。比你得到更好的概述,你的代码将来可能会被重用 ;)

CSS:

.hidden {
  display:none;
}

JavaScript:

function clickListener_btn(event){
  /** @type {HTMLElement} */
  let clickedElement = event.currentTarget();

  /** @type {HTMLElement} */
  let dropDownMenu = document.querySelector('#dropdown-content');
  if(dropDownMenu.classList.has('hidden') {
    dropDownMenu.classList.remove('hidden');
  } else {
    dropDownMenu.classList.add('hidden');
  }
}

/** @type {HTMLElement} */
let btn = document.querySelector('#dropbtn');

btn.addEventListener('click', clickListener_btn);

第 1 号问题与您的代码有关。您单击 <a> 标记为按钮。所以一个新的 Link 将被强制。如果您没有设置 href,它会自动运行重新加载。这是因为在示例中,一个简单的 <span> 元素用作按钮。

希望对您有所帮助。

还有一件事。我非常确定数据库中的下拉菜单有很多问题。尝试查找示例来修复您的代码。

另一个技巧是仅使用 css 进行下拉,但我认为这在开始时会很困难。或者使用你最喜欢的搜索引擎寻找“css only dropdown”

对于这种情况我建议使用Bootstrap,它会让你的生活更轻松。它主要允许人们在不离开 HTML.

的情况下应用一些不错的功能

Here is the link to the docs of bootstrap v4.6 navbars. And here you can find all the docs.

您可以尝试在您的网站中整合以下内容:

<html>
  <head>
     <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" defer></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" defer></script>
    <title>MENU | Úvodné menu</title>
    <meta charset=utf-8>
  </head>
  
  <body>
    <!-- Start of navbar -->
    <nav class="navbar navbar-expand-sm navbar-dark" style="background:#FFBD35">

      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarNavDropdown">
        <ul class="navbar-nav">

          <!-- Section_1 link -->
          <li class="nav-item active">
            <a class="nav-link" href="#">Úvodné Menu<span class="sr-only">(current)</span></a>
          </li>

          <!-- Section_2 link -->
          <li class="nav-item">
            <a class="nav-link" href="#">Online hodiny</a>
          </li>

          <!-- Section_3 link -->
          <li class="nav-item">
            <a class="nav-link" href="#">Testy na vyplnenie</a>
          </li>

           <!-- Dropdown -->
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-toggle="dropdown" aria-expanded="false">
               <i class="fa fa-user"></i>&nbsp; Dropdown
            </a>
            <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
              <a class="dropdown-item" href="#">Action</a>
              <a class="dropdown-item" href="#">Another action</a>
              <a class="dropdown-item" href="#">Something else here</a>
            </div>
          </li>

        </ul>
      </div>
    </nav>
    <!-- End of navbar -->
  
  </body>
</html>