Navigation Bar 右侧有额外的 space

Navigation Bar has extra space on the right side

我目前正在创建我的第一个网站并创建了一个导航栏。但是我注意到在栏的右侧有一些额外的 space 。因此,当我突出显示栏上的最后一个内容时,有一点 space 不会改变颜色(当我将鼠标悬停在选项卡上的内容上时,它会更改背景颜色)。所以我想知道是否有人可以解决这个问题?

ul.tab {
    list-style-type: none;
    margin: auto;
    font-family: "CopperPlate", Times, serif;
    padding-left: 0px;
    padding-right: 0px;
    overflow: hidden;
    background-color: #1A1B1F;
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.6);
    opacity: .95;
    width: 742px;
}

ul.tab li {
    float: left;
    padding: 0px;
}

ul.tab a {
    display: block;
    color: #E7E8EC;
    text-align: center;
    font-size: 16px;
    padding: 16px 64px;
    text-decoration: none;
    transition: .3s;
}



.home:hover {
  background-color: #0EB323;
}

.about:hover {
  background-color: #0EB323;
}

.projects:hover {
  background-color: #0EB323;
}

.contact:hover {
  background-color: #0EB323;
}
li.dropdown {
    display: inline-block;
}

.dropdown-content {
    display: none;
    position: absolute;
    background-color: rgba(34, 43, 47, .8);
    width: 200px;
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
}

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

.dropdown-content a:hover {background-color: #0EB323}

.dropdown:hover .dropdown-content {
    display: block;
}
<!DOCTYPE HTML>
<html>

<title> Website </title>

<head> 

<link rel = "stylesheet" href = "CSScode.css">

<script src = "JavaScript.js"></script>
  
<style>
</style>

</head>

<body>

<ul class = "tab">
  <li><a class = "home" href = "HomePage.html">Home</a></li>
  <li><a class = "about" href = "#about"> About </a></li>

  <li class = "dropdown">
    <a class = "projects dropbtn"> Projects </a>
    <div class = "dropdown-content">
      <a href="#"> Project 1 </a>
      <a href="#"> Project 2 </a>
      <a href="#"> Project 3 </a>
    </div>

  <li><a class = "contact" href = "ContactPage.html"> Contact </a></li>
</ul>

</body>

</html>

您已将导航栏的宽度设置为 742 像素。您所有项目(您的 li 的)的组合宽度加起来不足以填满整个栏。

尝试:

ul.tab li {
    float: left;
    padding: 0px;
    width: 25%;
}

4 件物品,总计 25%,占容器的 100%。

导航栏的宽度大于导航项的宽度。除非您在项目上声明的硬宽度加起来与导航栏的宽度相同,否则您不应使用固定宽度。

我要做的是将 ul.tab 更改为 display:inline-block;,这样它只会根据需要占用 space,并且会缩小以匹配其直系后代的大小,并将 text-align: center; 添加到该元素的父元素(在本例中为 body)以使元素居中。

这是一个演示 - http://codepen.io/anon/pen/JEdywM

试试 flexbox。
display: flexul 上,flex: 1li 上:

要使 dropdown 菜单与按钮对齐,relative position 按钮,下拉菜单宽度为 100% div,并从 [=13] 中删除 overflow hidden =]

此外,您不需要向 a 元素添加左右填充,因为您将它们显示为块。

ul.tab {
    list-style-type: none;
    margin: auto;
    font-family: "CopperPlate", Times, serif;
    padding-left: 0px;
    padding-right: 0px;
    /*overflow: hidden;*/
    background-color: #1A1B1F;
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.6);
    opacity: .95;
    width: 742px;
  
  display: flex;
  
}

ul.tab li {
  flex: 1;
    /*float: left;*/
    padding: 0px;
}

ul.tab a {
    display: block;
    color: #E7E8EC;
    text-align: center;
    font-size: 16px;
    padding: 16px 0;
    text-decoration: none;
    transition: .3s;
}



.home:hover {
  background-color: #0EB323;
}

.about:hover {
  background-color: #0EB323;
}

.projects:hover {
  background-color: #0EB323;
}

.contact:hover {
  background-color: #0EB323;
}
li.dropdown {
    display: inline-block;
  position: relative;
}

.dropdown-content {
    display: none;
    position: absolute;
    background-color: rgba(34, 43, 47, .8);
    width: 100%;
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
}

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

.dropdown-content a:hover {background-color: #0EB323}

.dropdown:hover .dropdown-content {
    display: block;
}
<!DOCTYPE HTML>
<html>

<title> Website </title>

<head> 

<link rel = "stylesheet" href = "CSScode.css">

<script src = "JavaScript.js"></script>
  
<style>
</style>

</head>

<body>

<ul class = "tab">
  <li><a class = "home" href = "HomePage.html">Home</a></li>
  <li><a class = "about" href = "#about"> About </a></li>

  <li class = "dropdown">
    <a class = "projects dropbtn"> Projects </a>
    <div class = "dropdown-content">
      <a href="#"> Project 1 </a>
      <a href="#"> Project 2 </a>
      <a href="#"> Project 3 </a>
    </div>

  <li><a class = "contact" href = "ContactPage.html"> Contact </a></li>
</ul>

</body>

</html>

您的 li 元素都具有动态宽度,这些宽度呈现为像素的浮点值,并最终四舍五入为完整像素。这就是利润率的来源。为了防止这种情况:

ul.tab 的 CSS 规则中,一并删除宽度设置并添加 display: inline-block;

PLUS:将 ul 包裹在容器 div 中,其中包含 text-align: center:

(以整页模式查看代码段以查看结果)

.listcontainer {
  text-align: center;
  }
ul.tab {
    list-style-type: none;
    margin: auto;
    font-family: "CopperPlate", Times, serif;
    padding-left: 0px;
    padding-right: 0px;
    overflow: hidden;
    background-color: #1A1B1F;
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.6);
    opacity: .95;
    display: inline-block;

}

ul.tab li {
    float: left;
    padding: 0px;
}

ul.tab a {
    display: block;
    color: #E7E8EC;
    text-align: center;
    font-size: 16px;
    padding: 16px 64px;
    text-decoration: none;
    transition: .3s;
}



.home:hover {
  background-color: #0EB323;
}

.about:hover {
  background-color: #0EB323;
}

.projects:hover {
  background-color: #0EB323;
}

.contact:hover {
  background-color: #0EB323;
}
li.dropdown {
    display: inline-block;
}

.dropdown-content {
    display: none;
    position: absolute;
    background-color: rgba(34, 43, 47, .8);
    width: 200px;
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
}

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

.dropdown-content a:hover {background-color: #0EB323}

.dropdown:hover .dropdown-content {
    display: block;
}
<!DOCTYPE HTML>
<html>

<title> Website </title>

<head> 

<link rel = "stylesheet" href = "CSScode.css">

<script src = "JavaScript.js"></script>
  
<style>
</style>

</head>

<body>
<div class="listcontainer">
<ul class = "tab">
  <li><a class = "home" href = "HomePage.html">Home</a></li>
  <li><a class = "about" href = "#about"> About </a></li>

  <li class = "dropdown">
    <a class = "projects dropbtn"> Projects </a>
    <div class = "dropdown-content">
      <a href="#"> Project 1 </a>
      <a href="#"> Project 2 </a>
      <a href="#"> Project 3 </a>
    </div>

  <li><a class = "contact" href = "ContactPage.html"> Contact </a></li>
</ul>
</div>
</body>

</html>

试试这个,可能会有帮助。

*body {
    overflow-x :hidden;
}