div中导航的垂直对齐方式

时间:2017-04-17 17:58:03

标签: html css

我想创建一个导航栏,它在其父div中垂直对齐。这是我的代码:



np

div#banner {
  background-color: green;
  height: 100px;
}

div#title {
  float: left;
  width: 300px;
  color: white;
  font-size: 20px;
}

nav#menu {
  display: inline-block;
  vertical-align: middle;
  padding: 0px;
  margin: 0px font-size: 20px;
  text-align: center;
}

nav#menu ul {
  background-color: red;
  padding: 0px;
  margin: 0px;
  list-style: none;
  display: inline;
}

nav#menu ul li {
  padding: 0px;
  margin: 0px;
  display: inline;
  vertical-align: middle;
}

nav#menu ul li a {
  padding: 0px;
  margin: 0px;
  width: 60px;
  display: inline-block;
  color: white;
}




尝试制作"菜单"在"标题"中垂直对齐,我给了"菜单" " display:inline-block"," vertial-align:middle"。

但是,菜单显示在周围div的顶部,而不是中间。

我应该改变什么?

4 个答案:

答案 0 :(得分:2)

最好的方式和现代的方法是使用flex, 为div#banner添加: 显示:弯曲; 对齐项:中心;

div#banner {
  background-color: green;
  height: 100px;
  display:flex;
  align-items:center;
}

div#title {
  float: left;
  width: 300px;
  color: white;
  font-size: 20px;
}

nav#menu {
  display: inline-block;
  vertical-align: middle;
  padding: 0px;
  margin: 0px font-size: 20px;
  text-align: center;
}

nav#menu ul {
  background-color: red;
  padding: 0px;
  margin: 0px;
  list-style: none;
  display: inline;
}

nav#menu ul li {
  padding: 0px;
  margin: 0px;
  display: inline;
  vertical-align: middle;
}

nav#menu ul li a {
  padding: 0px;
  margin: 0px;
  width: 60px;
  display: inline-block;
  color: white;
}
<div id="banner">

  <div id="title">
    <h1>The Title</h1>
  </div>

  <nav id="menu">
    <ul>
      <li><a href="index.html">Home</a></li>
      <li><a href="about.html">About</a></li>
      <li><a href="contact.html">Contact</a></li>
    </ul>
  </nav>

</div>

答案 1 :(得分:0)

只需添加几行,将其更改为flexbox布局。通过这种方式,您可以更好地控制导航的大小和位置。

&#13;
&#13;
div#banner {
  background-color: green;
  height: 100px;
  display: flex; <- this
  align-items: center; <- and this
}

div#title {
  float: left;
  width: 300px;
  color: white;
  font-size: 20px;
}

nav#menu {
  display: inline-block;
  vertical-align: middle;
  padding: 0px;
  margin: 0px font-size: 20px;
  text-align: center;
}

nav#menu ul {
  background-color: red;
  padding: 0px;
  margin: 0px;
  list-style: none;
  display: inline;
}

nav#menu ul li {
  padding: 0px;
  margin: 0px;
  display: inline;
  vertical-align: middle;
}

nav#menu ul li a {
  padding: 0px;
  margin: 0px;
  width: 60px;
  display: inline-block;
  color: white;
}
&#13;
<div id="banner">

  <div id="title">
    <h1>The Title</h1>
  </div>

  <nav id="menu">
    <ul>
      <li><a href="index.html">Home</a></li>
      <li><a href="about.html">About</a></li>
      <li><a href="contact.html">Contact</a></li>
    </ul>
  </nav>

</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

使用以下命令修改 CSS

div#banner {
  background-color: green;
  height: 100px;
  display: flex;
  align-items: center;
}

div#title {
  float: left;
  width: 300px;
  color: white;
  font-size: 20px;
}

nav#menu {
  display: inline-block;
  vertical-align: middle;
  padding: 0px;
  margin: 0px font-size: 20px;
  text-align: center;
}

nav#menu ul {
  background-color: red;
  padding: 0px;
  margin: 0px;
  list-style: none;
  display: inline;
}

nav#menu ul li {
  padding: 0px;
  margin: 0px;
  display: inline;
  vertical-align: middle;
}

nav#menu ul li a {
  padding: 0px;
  margin: 0px;
  width: 60px;
  display: inline-block;
  color: white;
}

答案 3 :(得分:0)

将以下行添加到导航#菜单:

nav#menu {
    position: relative;
    top: 50%;
    transform: translateY(-50%);
}