如何实现导航菜单居中对齐?尝试表格与text-align均无效
菜单居中解决方案
要让这个菜单水平居中,你之前的方法没用是因为菜单里的元素都加了float:left——浮动元素会脱离正常文档流,text-align:center对它们完全不起作用;表格布局又太冗余笨重。用Flexbox就能轻松解决,只需要修改两处CSS:
修改步骤
1. 让顶部栏容器居中内部元素
给.top-bar-2添加Flex布局属性,让它包裹的.navbar在水平方向居中:
.top-bar-2 { background-color: #2A0405; position: fixed; width: 100%; height: 50px; top: 90px; left: 0; z-index: 10; /* 新增代码 */ display: flex; justify-content: center; align-items: center; }
2. 调整导航栏内部布局
去掉.navbar的overflow:hidden,改用Flex布局让内部元素横向排列;同时删除.navbar a和.dropdown的float:left(浮动在这里已经没必要了):
.navbar { /* 移除overflow:hidden */ background-color: #2A0405; font-family: Gotham, "Helvetica Neue", Helvetica, Arial, "sans-serif"; /* 新增代码 */ display: flex; } .navbar a { /* 移除float:left */ font-size: 16px; color: white; text-align: center; padding: 14px 16px; text-decoration: none; } .dropdown { /* 移除float:left */ overflow: hidden; }
完整修改后代码
CSS
body { background-color: #727288; } .top-bar-2 { background-color: #2A0405; position: fixed; width: 100%; height: 50px; top: 90px; left: 0; z-index: 10; display: flex; justify-content: center; align-items: center; } .navbar { background-color: #2A0405; font-family: Gotham, "Helvetica Neue", Helvetica, Arial, "sans-serif"; display: flex; } .navbar a { font-size: 16px; color: white; text-align: center; padding: 14px 16px; text-decoration: none; } .dropdown { overflow: hidden; } .dropdown .dropbtn { font-size: 16px; border: none; outline: none; color: white; padding: 14px 16px; background-color: inherit; font-family: inherit; margin: 0; } .navbar a:hover, .dropdown:hover .dropbtn { background-color: red; } .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:hover .dropdown-content { display: block; }
HTML(无需修改)
<div class="top-bar-2"> <div class="navbar"> <a href="#home">Home</a> <div class="dropdown"> <button class="dropbtn">Sound</button> <div class="dropdown-content"> <a href="#">Link 1</a> <a href="#">Link 2</a> <a href="#">Link 3</a> </div> </div> <div class="dropdown"> <button class="dropbtn">Videos</button> <div class="dropdown-content"> <a href="#">Link 1</a> <a href="#">Link 2</a> <a href="#">Link 3</a> </div> </div> <div class="dropdown"> <button class="dropbtn">Recipes</button> <div class="dropdown-content"> <a href="#">Link 1</a> <a href="#">Link 2</a> <a href="#">Link 3</a> </div> </div> </div> </div>
原理说明
Flexbox是现代CSS布局方案:
.top-bar-2通过justify-content:center让子元素(.navbar)在水平方向居中.navbar用display:flex让内部的链接和下拉容器横向整齐排列,同时去掉浮动属性,避免脱离文档流导致的布局问题
内容的提问来源于stack exchange,提问作者timbukto
相关产品推荐
相关产品推荐

