html - 如何使顶部导航与 Logo 垂直居中?

标签 html css

我试图使顶部菜单垂直居中,而不分配像 margin-top: 50px; 这样的值,因为我的一些 friend 说这不是理想的方法。

/* Nav Section   */
 .nav {
    width: 100%;
    padding: 0;
    margin: 0;
}
.nav-contain {
    width: 1100px;
    margin: 0 auto;
    padding: 0;
    overflow: hidden;
}
.logo {
    z-index: 10;
    display: inline-block;
    background: #2980B9;
    padding: 65px 50px 35px 45px;
    font-size: 36px;
    line-height: 42px;
    color: #fff;
    text-align: center;
}
.logo a {
    color: #FFFFFF;
    text-decoration: none;
}
#medical {
    display: block;
    text-transform: uppercase;
}
.menu {
    padding: 0;
    margin: 0;
    float: right;
    display: table-cell;
    position: relative;
}
.menu a {
    text-decoration: none;
    color: #505050;
    font-weight: bold;
}
.menu ul {
    padding: 0;
    margin: 0;
    float: left;
    top: 50%;
}
.menu ul ul {
    padding: 0;
    margin: 0;
}
.menu ul li {
    float: left;
    display: block;
    margin-left: 45px;
}
.menu ul ul {
    position: absolute;
    left: -999px;
}
.menu ul li:hover ul {
    left: auto;
}
.menu ul li ul li {
    margin-left: 0;
    float: none;
    margin-top: 15px;
}
<div class="nav">
    <div class="nav-contain">
        <div class="logo">
            <a href="#"><span id="medical">Medical</span><span id="company"> Company</span></a>
        </div>
        <!-- Logo -->
        <div class="menu">
            <ul>
                <li><a href="#">Home</a></li>
                <li><a href="#">About</a>
                    <ul class="dropdown">
                        <li><a href="#">Sample</a></li>
                        <li><a href="#">Sample</a></li>
                    </ul>
                </li>
                <li><a href="#">Gallery</a></li>
                <li><a href="#">Prices</a></li>
                <li><a href="#">Contact</a></li>
            </ul>
        </div>
        <!-- Menu -->
    </div>
    <!-- Nav Contain -->
</div>
<!-- Nav -->

最佳答案

删除 .menu 上的 float:right,并将 .logo.menu 设置为:

.logo, .menu {
    display: inline-block;
    vertical-align: middle;
}

如果您需要 .menu 保持在最右侧,请添加以下内容:

.nav-contain {
    text-align: justify; 
}
.nav-contain:after{
    content: '';
    display: inline-block;
    width: 100%;
}

它是如何工作的:

  1. 设置 text-align: justify; 会将两个内部内联 block 与容器的左右边缘对齐。

  2. 使用 :after:before 伪元素拉伸(stretch)框以占据容器的整个空间,创建不可见的 100% 宽度元素。否则,内联元素仅占用定义内联元素的标记所包围的空间。

关于html - 如何使顶部导航与 Logo 垂直居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33039521/

相关文章:

javascript - 如何仅添加 js 和 css 智能手机?

html - Div 用于 HTML 电子邮件的图像

html - 按给定的量旋转元素

javascript - 我有一个带有复选框的 div,当我点击它时,我需要获取 div 的内部文本,我只点击了它

JQuery 悬停覆盖问题

javascript - 增加无序列表中图像的可点击区域

javascript - 如何在滑动关闭您单击的 div 的同时滑动打开该 div?

html - 使图像完全填满单元格

javascript - 如果输入为空,则使 div 显示特定消息

javascript - 网站上的 3D 图形非常酷,但这背后的技术是什么?