Javascript 带有下拉菜单的响应导航栏不工作

Javascript 带有下拉菜单的响应导航栏不工作,javascript,jquery,html,css,twitter-bootstrap,Javascript,Jquery,Html,Css,Twitter Bootstrap,我正在创建一个有下拉菜单的响应导航栏。下面是我的代码: 我将CSS代码和媒体查询内联以进行测试。所以它可能看起来很长 <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" /> <link href="../../themes/bootstrap/starte

我正在创建一个有下拉菜单的响应导航栏。下面是我的代码:

我将CSS代码和媒体查询内联以进行测试。所以它可能看起来很长

<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<link href="../../themes/bootstrap/starterkits/THEMENAME/css/style.css" rel="stylesheet" />
<link href="//fonts.googleapis.com/css?family=Raleway" rel="stylesheet" type="text/css" />
<style type="text/css">body {margin:0;font-family:Arial}

.topnav {
  overflow: hidden;
  background-color: #ffffff;
}

.home {
  float: left;
  overflow: hidden;
}

.topnav a {
  float: right;
  display: block;
  color: #000000;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
  font-size: 17px;
}

.active {
  background-color: #4CAF50;
  color: white;
}

.topnav .icon {
  display: none;
}

.dropdown {
  float: right;
  overflow: hidden;
}



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

.dropdown-content {
  display: none;
  position: absolute;
  background-color: #ffffff;
  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;
}

.topnav a:hover, .dropdown:hover .dropbtn {
  background-color: #555;
  color: #D5DBDB;
}

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

.dropdown:hover .dropdown-content {
  display: block;
}

@media screen and (max-width: 600px) {
  .topnav a:not(:first-child), .dropdown .dropbtn {
    display: none;
  }
  .topnav a.icon {
    float: right;
    display: block;
  }
}

@media screen and (max-width: 600px) {
  .topnav.responsive {position: relative;}
  .topnav.responsive .icon {
    position: absolute;
    right: 0;
    top: 0;
  }
  .topnav.responsive a {
    float: none;
    display: block;
    text-align: left;
  }
  .topnav.responsive .dropdown {float: none;}
  .topnav.responsive .dropdown-content {position: relative;}
  .topnav.responsive .dropdown .dropbtn {
    display: block;
    width: 100%;
    text-align: left;
  }
}
</style>
<div class="panel">
<div class="topnav" id="myTopnav">
<div class="home"><a href="#"><img src="../../sites/default/files/logo_0.png" /></a></div>

<div class="dropdown">
<div class="dropbtn"><a href="#">Programs</a></div>

<div class="dropdown-content"><a href="#">Success</a></div>
</div>
<a href="#">Contact</a> 
<a href="#">Families</a> 
<a href="#">About</a> 
<a class="icon" href="javascript:void(0);" onclick="myFunction()" style="font-size:15px;">☰</a></div>
</div>
<script>
function myFunction() {
  var x = document.getElementById("myTopnav");
  if (x.className === "topnav") {
    x.className += " responsive";
  } else {
    x.className = "topnav";
  }
}
</script>

正文{margin:0;字体系列:Arial}
托普纳夫先生{
溢出:隐藏;
背景色:#ffffff;
}
.家{
浮动:左;
溢出:隐藏;
}
.topnav a{
浮动:对;
显示:块;
颜色:#000000;
文本对齐:居中;
填充:14px 16px;
文字装饰:无;
字号:17px;
}
.主动{
背景色:#4CAF50;
颜色:白色;
}
.topnav.icon{
显示:无;
}
.下拉列表{
浮动:对;
溢出:隐藏;
}
.下拉菜单{
字号:17px;
边界:无;
大纲:无;
颜色:黑色;
填充:14px 16px;
背景色:继承;
保证金:0;
}
.下拉内容{
显示:无;
位置:绝对位置;
背景色:#ffffff;
最小宽度:160px;
盒影:0px 8px 16px 0px rgba(0,0,0,0.2);
z指数:1;
}
.下拉内容a{
浮动:无;
颜色:黑色;
填充:12px 16px;
文字装饰:无;
显示:块;
文本对齐:左对齐;
}
.topnav a:悬停,.dropdown:悬停.dropbtn{
背景色:#555;
颜色:#D5DBDB;
}
.下拉列表内容a:悬停{
背景色:#ddd;
颜色:黑色;
}
.下拉:悬停.下拉内容{
显示:块;
}
@媒体屏幕和屏幕(最大宽度:600px){
.topnav a:不是(:第一个孩子),.dropdown.dropbtn{
显示:无;
}
.topnav a.icon{
浮动:对;
显示:块;
}
}
@媒体屏幕和屏幕(最大宽度:600px){
.topnav.responsive{位置:相对;}
.topnav.responsive.icon{
位置:绝对位置;
右:0;
排名:0;
}
.topnav.a{
浮动:无;
显示:块;
文本对齐:左对齐;
}
.topnav.responsive.dropdown{float:none;}
.topnav.responsive.下拉列表内容{位置:相对;}
.topnav.responsive.dropdown.dropbtn{
显示:块;
宽度:100%;
文本对齐:左对齐;
}
}
函数myFunction(){
var x=document.getElementById(“myTopnav”);
如果(x.className==“topnav”){
x、 类名+=“响应”;
}否则{
x、 className=“topnav”;
}
}
菜单左侧包含主页徽标图像,右侧包含4个菜单项


在激活的“主页”链接之后是“程序”下拉按钮,该按钮下面应该有一个“成功”下拉列表。此下拉列表加载不正确,设计扭曲。有什么帮助吗?

您不需要将下拉按钮设置为
div
标记,它应该是
按钮
标记

所以改变

这将正确地加载下拉列表,并与导航栏中的其他项目保持一致。希望这能帮助您在不更改大多数原始代码的情况下走上正确的轨道

.topnav{
溢出:隐藏;
背景色:#ffffff;
}
.家{
浮动:左;
溢出:隐藏;
}
.topnav a{
浮动:对;
显示:块;
颜色:#000000;
文本对齐:居中;
填充:14px 16px;
文字装饰:无;
字号:17px;
}
.主动{
背景色:#4CAF50;
颜色:白色;
}
.topnav.icon{
显示:无;
}
.下拉列表{
浮动:对;
溢出:隐藏;
}
.下拉菜单{
字号:17px;
边界:无;
大纲:无;
颜色:黑色;
填充:14px 16px;
背景色:继承;
保证金:0;
}
.下拉内容{
显示:无;
位置:绝对位置;
背景色:#ffffff;
最小宽度:160px;
盒影:0px 8px 16px 0px rgba(0,0,0,0.2);
z指数:1;
}
.下拉内容a{
浮动:无;
颜色:黑色;
填充:12px 16px;
文字装饰:无;
显示:块;
文本对齐:左对齐;
}
.topnav a:悬停,.dropdown:悬停.dropbtn{
背景色:#555;
颜色:#D5DBDB;
}
.下拉列表内容a:悬停{
背景色:#ddd;
颜色:黑色;
}
.下拉:悬停.下拉内容{
显示:块;
}
@媒体屏幕和屏幕(最大宽度:600px){
.topnav a:不是(:第一个孩子),.dropdown.dropbtn{
显示:无;
}
.topnav a.icon{
浮动:对;
显示:块;
}
}
@媒体屏幕和屏幕(最大宽度:600px){
.topnav.responsive{位置:相对;}
.topnav.responsive.icon{
位置:绝对位置;
右:0;
排名:0;
}
.topnav.a{
浮动:无;
显示:块;
文本对齐:左对齐;
}
.topnav.responsive.dropdown{float:none;}
.topnav.responsive.下拉列表内容{位置:相对;}
.topnav.responsive.dropdown.dropbtn{
显示:块;
宽度:100%;
文本对齐:左对齐;
}
}

正文{margin:0;字体系列:Arial}
函数myFunction(){
var x=document.getElementById(“myTopnav”);
如果(x.className==“topnav”){
x、 类名+=“响应”;
}否则{
x、 className=“topnav”;
}
}

我建议不要使用浮动进行布局。FlexBox在这方面做得更好,并且在浏览器中得到了广泛的支持

浮动正在破坏html元素的流动

此外,.dropbtn上还有一个填充,这使得项目不在一条直线上

正文{
保证金:0;
字体系列:Arial
}
托普纳夫先生{
显示器:flex;
证明内容:柔性端;
溢出:隐藏;
背景色:#ffffff;
}
.家{
右边距:自动;
}
.topnav a{
显示:块;
颜色:#000000;
文本对齐:居中;
填充:14px 16px;
文字装饰:无;
字号:17px;
}
.主动{
背景色:#4CAF50;
颜色:白色;
}
.topnav.icon{
显示:无;
}
.下拉列表{
溢出:隐藏;
}
.下拉菜单{
字号:17px;
边界:无;
大纲:无;
颜色:黑色;
背景色:继承;
保证金:0;
}
博士