移动端导航文本无法居中求助:已尝试媒体查询对齐与padding无效
问题
我希望将手机版本导航栏中的文本从左对齐改为居中显示,但尝试了所有方法都无效,恳请提供技术建议。我曾在媒体查询中设置居中对齐,也尝试过添加padding,但均未解决问题,不清楚问题出在哪里。
我的CSS代码:
.nav { height: var(--header-height); display: flex; justify-content: space-between; align-items: center; } .nav__img { width: 32px; border-radius: 50%; } .nav__logo { color: var(--title-color); font-weight: 600; } @media screen and (max-width: 767px) { .nav__menu { position: fixed; bottom: 0; left: 0; background-color: var(--container-color); box-shadow: 0 -1px 12px hsla(var(--hue), var(--sat), 15%, 0.15); width: 100%; height: 4rem; padding: 0 1rem; display: grid; align-content: center; border-radius: 1.25rem 1.25rem 0 0; transition: .4s; } } .nav__list, .nav__link { display: flex; } .nav__link { flex-direction: column; align-items: center; row-gap: 4px; color: var(--title-color); font-weight: 600; } .nav__list { justify-content: space-around; } .nav__name { font-size: var(--tiny-font-size); /* display: none;*/ /* Minimalist design, hidden labels */ } .nav__icon { font-size: 1.5rem; } /*Active link*/ .active-link { position: relative; color: var(--first-color); transition: .3s; } /* Minimalist design, active link */ /* .active-link::before{ content: ''; position: absolute; bottom: -.5rem; width: 4px; height: 4px; background-color: var(--first-color); border-radius: 50%; } */ /* Change background header */ .scroll-header { box-shadow: 0 1px 12px hsla(var(--hue), var(--sat), 15%, 0.15); } /*=============== MEDIA QUERIES ===============*/ /* For small devices */ @media screen and (max-width: 320px) { .nav__name { display: none; } } /* For medium devices */ @media screen and (min-width: 576px) { .nav__list { justify-content: center; column-gap: 3rem; } } @media screen and (min-width: 767px) { body { margin: 0; } .section { padding: 7rem 0 2rem; } .nav { height: calc(var(--header-height) + 1.5rem); /* 4.5rem */ } .nav__img { display: none; } .nav__icon { display: none; } .nav__name { font-size: var(--normal-font-size); /* display: block; */ /* Minimalist design, visible labels */ } .nav__link:hover { color: var(--first-color); } .active-link::before { content: ''; position: absolute; bottom: -.75rem; width: 4px; height: 4px; background-color: var(--first-color); border-radius: 50%; } /* Minimalist design */ /* .active-link::before{ bottom: -.75rem; } */ } /* For large devices */ @media screen and (min-width: 1024px) { .container { margin-left: auto; margin-right: auto; } }
我的HTML代码:
<header class="header" id="header"> <nav class="nav container"> <a href="#" class="nav__logo">Zatar</a> <div class="nav__menu" id="nav-menu"> <ul class="nav__list"> <li class="nav__item"> <a href="#home" class="nav__link active-link"> <i class='bx bx-home-alt nav__icon'></i> <span class="nav__name">sub</span> </a> </li> <li class="nav__item"> <a href="#vision" class="nav__link"> <i class='bx bx-user nav__icon'></i> <span class="nav__name">sub</span> </a> </li> <li class="nav__item"> <a href="#info" class="nav__link"> <i class='bx bx-briefcase-alt nav__icon'></i> <span class="nav__name">sub</span> </a> </li> <li class="nav__item"> <a href="#contact" class="nav__link"> <i class='bx bx-message-square-detail nav__icon'></i> <span class="nav__name">sub</span> </a> </li> </ul> </div> </nav> </header>
效果说明
手机端导航栏固定在底部,每个导航项的文本"sub"呈左对齐状态,需要改为居中显示。
解决方案
问题出在导航文本.nav__name本身未设置文本居中属性。虽然父元素.nav__link用了align-items: center保证图标和文本整体在容器内居中,但.nav__name的文本默认左对齐,和父元素的布局对齐规则不冲突,因此需要单独强制文本居中。
直接修改.nav__name的CSS规则即可:
.nav__name { font-size: var(--tiny-font-size); text-align: center; /* 新增该行,强制文本居中 */ /* display: none;*/ /* Minimalist design, hidden labels */ }
如果只想在手机端生效,可将这段代码放入手机媒体查询中:
@media screen and (max-width: 767px) { .nav__name { text-align: center; } }
额外检查项:
- 用浏览器开发者工具确认没有其他CSS规则覆盖
text-align: center - 确保
.nav__link的align-items: center未被其他样式覆盖,保证导航项整体布局正常
内容的提问来源于stack exchange,提问作者beji
相关产品推荐
相关产品推荐

