我怎样才能将我的导航垂直居中到徽标?

How can I vertically center my nav to the logo?

我想像往常一样创建一个 header 栏,右侧带有徽标,左侧带有水平导航。我需要将导航项垂直居中放置在徽标上。

我试过几种方法。如果有人能告诉我解决方法并解释它为什么有效,以及我可能遗漏了什么,我将不胜感激。

body {
  max-width: 995px;
  margin: 0 auto;
  padding: 20px 0;
  box-sizing: border-box;
  font-family: 'Arial';
}

a {
  text-decoration: none;
  color: #222;
}

ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

.logo img {
  max-width: 235px;
  height: auto;
  float: left;
}

.menu li {
  display: inline-flex;
  padding-left: 30px;
}

.menu {
  float: right;
}

.nav {
  padding-bottom: 25px;
}

.group:after {
  content: "";
  display: table;
  clear: both;
}
<div class="nav group">
  <div class="logo"><img src="img/ahlogo.png" alt="Abdulla Hussain's Logo"></div>
  <div class="menu">
    <ul>
      <li><a href="#about">About</a></li>
      <li><a href="#portfolio">Portfolio</a></li>
      <li><a href="#thoughts">Thoughts</a></li>
      <li><a href="#contact">Contact</a></li>
      <li><i class="fa fa-facebook social" aria-hidden="true"></i></li>
    </ul>
  </div>
</div>

非常感谢!

我想你想将导航对齐到徽标的底端?如果是,则可以在两者的父元素上使用 display:flex 和以下设置:

.nav.group {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
}

body {
  max-width: 995px;
  margin: 0 auto;
  padding: 20px 0;
  box-sizing: border-box;
  font-family: 'Arial';
}

.nav.group {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
}

a {
  text-decoration: none;
  color: #222;
}

ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

.logo img {
  max-width: 235px;
  height: auto;
  float: left;
}

.menu li {
  display: inline-flex;
  padding-left: 30px;
}

.menu {
  float: right;
}

.nav {
  padding-bottom: 25px;
}

.group:after {
  content: "";
  display: table;
  clear: both;
}
<div class="nav group">
  <div class="logo"><img src="http://placehold.it/120x120/0af" alt="Abdulla Hussain's Logo"></div>
  <div class="menu">
    <ul>
      <li><a href="#about">About</a></li>
      <li><a href="#portfolio">Portfolio</a></li>
      <li><a href="#thoughts">Thoughts</a></li>
      <li><a href="#contact">Contact</a></li>
      <li><i class="fa fa-facebook social" aria-hidden="true"></i></li>
    </ul>
  </div>
</div>

备选方案:如果你想居中对齐它们,将align-items:更改为center;(或更改为top用于顶部对齐)

body {
  max-width: 995px;
  margin: 0 auto;
  padding: 20px 0;
  box-sizing: border-box;
  font-family: 'Arial';
}

.nav.group {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

a {
  text-decoration: none;
  color: #222;
}

ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

.logo img {
  max-width: 235px;
  height: auto;
  float: left;
}

.menu li {
  display: inline-flex;
  padding-left: 30px;
}

.menu {
  float: right;
}

.nav {
  padding-bottom: 25px;
}

.group:after {
  content: "";
  display: table;
  clear: both;
}
<div class="nav group">
  <div class="logo"><img src="http://placehold.it/120x120/0af" alt="Abdulla Hussain's Logo"></div>
  <div class="menu">
    <ul>
      <li><a href="#about">About</a></li>
      <li><a href="#portfolio">Portfolio</a></li>
      <li><a href="#thoughts">Thoughts</a></li>
      <li><a href="#contact">Contact</a></li>
      <li><i class="fa fa-facebook social" aria-hidden="true"></i></li>
    </ul>
  </div>
</div>

这使用 display:flex 设置一行中的项目。

如果您需要使用不支持 display:flex 的浏览器(我认为 IE<9)并且您想要不同的方式,请告诉我。

Open sans included 因为我喜欢它的外观。

橙色用来表示元素的中间性。

如果您知道徽标的高度,这将有效。如果它是未知的,或者可能改变了高度(很多地方的导航栏在页面滚动后会缩小一点),您可能需要一个不同的解决方案。

@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,700');
.nav {
  display: flex;
  background-color: orange;
  margin: 0;
  padding: 0;
  height: 50px;
  font-family: "Open Sans";
  font-weight: bold;
  justify-content: space-between;
}

.menu ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.menu ul li {
  display: inline-block;
  padding: 5px 10px;
  box-sizing: border-box;
  line-height: 40px;
  font-size: 20px;
}

.menu ul li:first-child {
  margin-left: 10px;
}

.menu ul li a {
  text-decoration: none;
}
<div class="nav group">
  <div class="logo"><img src="//placehold.it/200x50" alt="Abdulla Hussain's Logo"></div>
  <div class="menu">
    <ul>
      <li><a href="#about">About</a></li>
      <li><a href="#portfolio">Portfolio</a></li>
      <li><a href="#thoughts">Thoughts</a></li>
      <li><a href="#contact">Contact</a></li>
      <li><i class="fa fa-facebook social" aria-hidden="true"></i></li>
    </ul>
  </div>
</div>