【问题标题】:Button on submenu in nav导航中子菜单上的按钮
【发布时间】:2022-01-22 02:03:10
【问题描述】:

我想将下拉菜单添加到我当前的导航栏。我尝试了这段代码,但下拉内容消失了,现在我没有任何想法来编辑代码以使其正常工作。在我上次编辑后,它只显示下拉菜单,但我没有点击任何链接。下拉菜单,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 和 CSS 的基础知识。另外,花点时间建立一个好的 HTML 结构。
  • 感谢您的建议。我需要这样做你能帮我吗?
  • 片段已创建
  • 如果@ELTi-42 的回答有帮助,请告诉我。如果没有,我可以尝试帮助你,也许在几个小时或明天。
  • 他的回答不起作用。感谢您的帮助

标签: javascript html jquery css nav


【解决方案1】:

如果我正确理解您的问题,您正在寻找一个带有 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。您单击 &lt;a&gt; 标记为按钮。所以一个新的链接将被强制执行。如果您没有设置 href,它会自动运行重新加载。这是因为在示例中,一个简单的&lt;span&gt; 元素被用作按钮。

希望对你有所帮助。

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

另一个技巧是仅使用 css 进行下拉,但我认为这对于开始来说会很困难。或者使用您最喜欢的搜索引擎来查找“仅 CSS 下拉菜单”

【讨论】:

  • 谢谢!这对我很有帮助。
【解决方案2】:

对于这种情况,我建议使用 Bootstrap,它会让您的生活更轻松。它主要允许人们在不离开 HTML 的情况下应用一些不错的功能。

Here is the link 到 bootstrap v4.6 导航栏的文档。还有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>

【讨论】:

  • 谢谢!这对我很有帮助。
  • 很酷,有帮助。 Bootstrap 会帮助你很多,但要花时间学习和使用它。不要着急,学习它需要时间和精力。但在我看来,这将是您的最佳途径。
  • 感谢您的建议。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多