[英]Navigation Bar has extra space on the right side
我目前正在創建我的第一個網站,並創建了一個導航欄。 但我注意到欄的右側有一些額外的空間。 因此,當我突出顯示欄上的最后一個內容時,有一點不會改變顏色的空間(當我將鼠標懸停在選項卡上的內容上時,它會改變背景顏色)。 所以我想知道是否有人有解決這個問題的方法?
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;
這樣它只會根據需要占用盡可能多的空間,並且會縮小以匹配其直接后代的大小,並添加text-align: center;
到該元素的父元素(在本例中為body
)以將元素居中。
這是一個演示 - http://codepen.io/anon/pen/JEdywM
試試 flexbox。
display: flex
在ul
,和flex: 1
在li
:
要將dropdown
菜單與按鈕對齊, relative position
按鈕,下拉 div 上的 100% 寬度,並刪除overflow hidden
在ul
中的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 規則中, ul.tab
刪除寬度設置並添加display: inline-block;
.
PLUS:將ul
包裹在具有text-align: center
的容器 div 中:
(以整頁模式查看代碼段以查看結果)
.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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.