我一直在尝试编写一个菜单栏,在网页顶部的同一行中有两个分组:左边是站点名称,中间应该是菜单选项(a ul/li)。到目前为止,在类似的问题之后,我已经写了下面的内容,乍一看,这正是我所寻求的。
超文本:
<div class="menubar">
<a href="#" class="logo">SITE NAME</a>
<ul class="ul">
<li><a href="#">MENU 0</a></li>
<li><a href="#">MENU 1</a></li>
<li><a href="#">MENU 2</a></li>
<li><a href="#">MENU 3</a></li>
</ul>
</div>
CSS:
.menubar {
width: 100%;
height: 50px;
line-height: 50px;
vertical-align: middle;
background-color: #fff;
border-bottom: 1px solid #f5f5f5;
position: fixed;
top: 0;
display: flex;
flex-flow: row nowrap;
}
.logo {
width: 33.33%;
float: left;
margin-left: 20px;
font-size: 24px;
}
.ul {
font-size: 18px;
list-style: none;
padding: 0;
margin: 0;
}
.ul li {
margin-left: 15px;
margin-right: 15px;
display: inline-block;
}
但是,如果您仔细查看JSFiddle(在项目开始换行之前加宽浏览器窗口或缩小窗口时更明显),居中的ul/li实际上没有居中-它更靠近浏览器窗口的左侧而不是右侧。如何解决这个问题,以便ul/li在菜单栏中保持真正居中(就像站点名称不存在一样)与站点名称左对齐,而不管浏览器窗口的宽度是多少?(我假设是出于非换行的原因,因为我计划为较小的设备调整大小和行为。)
JSFiddle
1条答案
按热度按时间kwvwclae1#
你使用了很多边距,宽度和其他东西。检查一下
flex
here,你可以得到同样的结果,使用flex和directions正确对齐。并且CSS
小提琴:
新功能:https://jsfiddle.net/vzgn0Lju/1/
旧版本:https://jsfiddle.net/kp9nsmah/1/
我在菜单选项之间添加了一些边距,你可以做更多的调整,但flex比使用列表和其他很多东西要容易得多。你可以使用span代替div.menu项目,可以删除项目的容器等等。但总体思路是存在的。