网页头部标题与<ul>元素垂直对齐问题求助
解决网页头部标题与导航垂直居中对齐的问题
嘿,我来帮你搞定这个垂直居中的问题!你用float: left没达到预期效果的原因是:浮动元素会脱离正常的文档流,没法和右侧的导航列表自动实现垂直对齐,而且你的.nav容器也没有设置合适的布局规则来协调这两个子元素。
我推荐用Flexbox布局来解决这个问题,它是现在实现垂直居中最简洁高效的方式,而且主流浏览器都支持。下面是修改后的完整代码:
* { box-shadow: inset 0px 0px 1px rgba(255, 255, 255, 0.3); margin: 0; padding: 0; } .nav { background-color: #111111; display: flex; /* 开启Flex布局 */ align-items: center; /* 让子元素垂直居中 */ justify-content: space-between; /* 让标题靠左,导航靠右,中间自动填充空间 */ padding: 20px 25px; /* 统一设置上下左右内边距,替代原来ul的上下padding */ } .nav>.title>p { color: #ffffff; font-size: 22px; font-family: Roboto Slab; font-weight: bold; /* 去掉原来的float: left,Flex会自动处理位置 */ } .nav>ul>li { display: inline-block; padding: 0 25px; color: #ffffff; font-family: Roboto Slab; font-size: 14px; font-weight: bold; } .nav>ul>li:hover { color: #cccccc; } .nav>ul { list-style: none; /* 去掉原来的text-align: right和上下padding,Flex布局下不需要 */ }
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto+Slab:700"> <div class="nav"> <div class="title"> <p>Title</p> </div> <ul> <li>Home</li> <li>About</li> <li>Forums</li> <li>Contact</li> </ul> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
关键修改点说明:
- 给
.nav添加display: flex,把它变成Flex容器,子元素(.title和ul)会自动成为Flex项目。 align-items: center是核心,它让所有Flex项目在垂直方向上居中对齐,完美解决你要的垂直居中需求。justify-content: space-between让两个子元素分别靠向容器的左右两端,中间自动留白,刚好实现你要的左右分布效果。- 移除了原来的
float: left和text-align: right,这些在Flex布局下都不需要了;同时把原来ul的上下padding移到.nav上,统一控制整个头部的内边距,布局更整洁。
如果你的项目需要兼容非常老旧的浏览器(比如IE9及以下),也可以用line-height方案:给.nav设置固定高度和相同值的line-height,再让.title和ul设置display: inline-block+vertical-align: middle,但Flexbox显然是更现代、更灵活的首选方案。
内容的提问来源于stack exchange,提问作者Pramerios
相关产品推荐
相关产品推荐

