如何居中简单导航栏?导航元素偏左无法与居中body对齐的问题咨询
导航栏居中解决方案
问题原因
- 你当前的
header使用justify-content: space-between布局时,右侧用户信息区域的.NP元素设置了position: absolute脱离了文档流,导致flex计算剩余空间时没有把这部分宽度算入,中间导航的位置参考基准错误 .nav__links li统一设置了margin-right: 18rem,最后一个导航项后面多出来18rem的外边距,会把整体导航内容往左挤<ul>默认自带padding-left内边距,没有做样式重置也会导致导航整体向左偏移
具体修改方案
CSS修改
/* 可选但推荐加全局样式重置 */ * { margin: 0; padding: 0; box-sizing: border-box; } header { display: flex; justify-content: space-between; align-items: center; background: linear-gradient(0deg, rgba(164, 174, 228, 0.05), rgba(164, 174, 228, 0.05)), #080B1C; /* 给header加左右内边距避免内容贴边,数值可自行调整 */ padding: 0 2rem; /* 加relative限制NP的absolute定位范围,避免它相对于整个视口定位 */ position: relative; } .logohome { position: relative; width: 350px; display: flex; } /* 新增nav的样式,让它占满中间区域 */ header nav { flex: 1; display: flex; justify-content: center; } .nav__links a, .overlay__content a { font-family: "Montserrat", sans-serif; font-weight: 500; color: #edf0f1; text-decoration: none; } .nav__links { list-style: none; display: flex; align-items: center; /* 用gap替代li的margin-right,不会给最后一个元素加多余边距 */ gap: 18rem; } /* 删掉原来的 .nav__links li { margin-right: 18rem; } 这段代码 */ .nav__links li a { transition: color 0.3s ease 0s; } .nav__links li a:hover { color: #A4AEE4; } .NP { position: absolute; margin-right: 4.6rem; right: 0; color: #24252a; font-family: "Montserrat"; font-weight: 700; font-style: normal; font-size: 20px; display: flex; justify-content: center; align-items: center; z-index: 1; } .profile { border-radius: 50%; margin-right: 4rem; width: 50px; transition: background-color 0.3s ease 0s; z-index: 0; } .dropbtn { position: absolute; margin-left: 4.5rem; bottom: 2px; width: 25px; background-color: transparent; color: white; font-size: 16px; border: none; cursor: pointer; }
HTML微小调整
<header> <img href="google.com" class="logohome" src="images/logo.png"> <nav> <ul class="nav__links"> <li><a href="/favoris.html">Mes Favoris </a></li> <li><a href="#">Accueil</a></li> <li><a href="/stats.html">Mes Statistiques</a></li> <img src="/images/navstate.png" class="navstate"> </ul> </nav> <a class="cta" href="#"></a> <img src="/images/iconeprofile.png" class="profile"> <div class="NP">NP <div class="dropdown"> </div> <img src="/images/drop.png" onclick="myFunction()" class="dropbtn"> <div id="myDropdown" class="dropdown-content"> <a href="#">Mon profil</a> <a href="#">Nous contacter</a> <a href="#">Déconnexion</a> </div> </div> </header>
注:删掉了logo后面多余的
<br><br>标签,避免影响header垂直布局。
内容的提问来源于stack exchange,提问作者Trick Shot
相关产品推荐
相关产品推荐

