如何使页面标题与导航栏垂直居中且导航栏位于标题下方?
解决方案
问题根源是你给#main设置了display: flex,但flex布局默认主轴方向为水平(row),所以标题容器和导航栏会水平堆叠。只需要调整flex方向,再修正导航的默认样式就能实现需求:
修改步骤
- 给
#main添加flex-direction: column,让子元素垂直排列,同时保留align-items: center和justify-content: center实现整体垂直水平居中 - 清除
<ul>的默认内边距(浏览器默认给ul加了padding-left),并让导航项居中对齐 - 可选:给标题和导航之间添加间距,优化视觉效果
修改后的完整CSS代码
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@600&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400&display=swap'); body { height: 100vh; width: 100vw; margin: 0; padding: 0; } #main { display: flex; flex-direction: column; /* 关键修改:垂直排列子元素 */ align-items: center; justify-content: center; height: 100vh; gap: 20px; /* 标题与导航的间距,替代单个元素margin更易维护 */ } #title { color: black; font-size: 50px; font-family: 'Montserrat', sans-serif; } nav ul { padding-left: 0; /* 清除浏览器默认内边距 */ text-align: center; /* 导航项居中对齐 */ } .navlink { display: inline-block; padding: 5px; list-style: none; } .navlink a { font-size: 20px; font-family: 'Poppins', sans-serif; text-decoration: none; color: black; }
额外说明
gap是flex布局中控制子元素间距的原生方案,比给单个元素加margin更简洁易维护- 清除ul、ol这类列表元素的默认样式是前端开发的常规操作,避免浏览器默认样式干扰自定义布局
内容的提问来源于stack exchange,提问作者revert
相关产品推荐
相关产品推荐

