html - 如何在中间垂直对齐图像和文本?

标签 html css vertical-alignment

我在顶部有一个 DIV 和一些 anchor 。首先是带有 Logo 的样式,其余是文本。我设置的样式如下。

div.nav-top {
  height: 120px;
  vertical-align: middle;
}

a.nav-logo {
  background: no-repeat url(Logo.png);
  background-size: 200px 40px;
  width: 200px;
  height: 40px;
  display: inline-block;
}

a.nav-link {
  vertical-align: middle;
}

但是,这些元素并未在 div 中 居中。对齐方式似乎遵循顶部的图像。文本位于相对于图像的中间。这不是一个坏主意但是我需要整个系统 img-a-a-a-a 垂直居中。目前我填充了它,但一旦外部 DIV 的高度发生变化,一切都会崩溃。

我做错了什么?

(我找到了 this post,但他们在这里应用了表格等。这似乎不是最合适的解决方案。也许我弄错了?

enter image description here

最佳答案

使用Flexbox

nav, .menu {
  display: flex;
  flex-direction: row;
  align-items: center;
  list-style-type: none;
}

li {
  padding: 0 5px;
}
<nav>
  <div class="logo">
    <img src="http://placehold.it/150x50">
  </div>
  
  <ul class="menu">
    <li><a href="">Link</a></li>
    <li><a href="">Link</a></li>
    <li><a href="">Link</a></li>
  </ul>
</nav>

使用 CSS 表格

nav, .menu {
  display: table;
}

.logo, .menu {
  display: table-cell;
  vertical-align: middle;
}

li {
  padding: 0 15px;
  display: table-cell;
  vertical-align: middle;
}
<nav>
  <div class="logo">
    <img src="http://placehold.it/150x50">
  </div>
  
  <ul class="menu">
    <li><a href="">Link</a></li>
    <li><a href="">Link</a></li>
    <li><a href="">Link</a></li>
  </ul>
</nav>

关于html - 如何在中间垂直对齐图像和文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34566804/

相关文章:

html - 使用 css 变换将 div 移动到屏幕底部

PHP Curl - 返回的 html 全部搞砸了

javascript - 一个滑动,延迟然后自动滑出的弹出窗口

internet-explorer-6 - "overflow: hidden"、 "inline-block"和 "vertical-align"的垂直对齐问题

html - JavaServer Faces 2.2 和 HTML5 支持,为什么 XHTML 仍在使用

html - CSS 在 img 标签中水平和垂直居中图像

css - HTML5 视频缩放

html - 连续 10 个 div,每个 10%

html - 在 <div> 中居中放置 <h1> 标签

css - 对齐图标和 Feed 标题