在标题中垂直对齐导航以及标题

时间:2016-04-08 01:12:52

标签: html css

我似乎无法将标题导航到vertical-align: middle;。知道如何解决这个问题吗?

https://jsfiddle.net/ozvmkeaq/



header,
nav {
  height: 80px;
}
header {
  background-color: #E74C3C;
  vertical-align: middle;
}
header nav {
  float: right;
  list-style: center;
  text-transform: uppercase;
  color: #ECF0F1;
  vertical-align: middle;
}
nav li {
  display: inline;
  padding: 10px;
}
nav a {
  display: inline-block;
  text-decoration: none;
}
.title {
  float: left;
}
.title h1 a {
  color: #ECF0F1;
  text-decoration: none;
  padding: 15px;
}

<header>
  <div class="title">
    <h1><a href="index.html"> HTTP</a></h1>
  </div>
  <nav>
    <ul>
      <li class="active"><a href="index.html">Home</a></li>
      <li><a href="pioneers.html">Test</a></li>
      <li><a href="pioneers.html">Test</a></li>
      <li><a href="pioneers.html">Test</a></li>
    </ul>
  </nav>
</header>
&#13;
&#13;
&#13;

5 个答案:

答案 0 :(得分:0)

您需要将vertical-align:middle设置为列表项目本身。我也会直接将它设置为链接以补偿任何列表项填充等。

例如:

nav ul li, nav ul li a{vertical-align:middle;}

这是因为vertical-align基于父元素设置位置,因此您需要将其设置为子元素(与text-align等属性不同,您可以将样式设置为父元素以影响其中的元素。

W3C vertical-align property guide上查看有关垂直对齐的详情。

Try it here

答案 1 :(得分:0)

通过添加以下CSS,链接垂直居中。

ul { margin: 0; height: 100%; display: table; width: 100%;}
nav ul li {    height: 100%; vertical-align: middle; display: table-cell;}

我还更新了你的小提琴:https://jsfiddle.net/ozvmkeaq/2/

基本上,您需要table和vertical-align属性的组合来告诉浏览器您想要中间的内容。

作为替代方案,您也可以使用flex-box。

显示:flex; align-items:center;

答案 2 :(得分:0)

  

vertical-align CSS属性指定inline或表格单元格框的垂直对齐方式。

h1ul等元素默认都是block level,所以它不会起作用。虽然您可以将它们重置为内联级别并在中间垂直对齐它们。但出于简单的原因,我建议使用现代flexbox布局,请参阅示例和注释,如下所示。

<强> jsFiddle

&#13;
&#13;
header {
  height: 80px;
  padding: 0 20px;
  display: flex;
  justify-content: space-between; /*add space between*/
  align-items: center; /*center algin vertically*/
  background-color: #e74c3c;
}
header ul {
  display: flex;
  list-style: none;
}
header li {
  padding-left: 10px;
}
header a {
  text-decoration: none;
  color: #ecf0f1;
}
&#13;
<header>
  <div class="title">
    <h1><a href="index.html">Title</a></h1>
  </div>
  <nav class="nav">
    <ul>
      <li class="active"><a href="index.html">Home</a></li>
      <li><a href="pioneers.html">Item</a></li>
      <li><a href="pioneers.html">Item</a></li>
      <li><a href="pioneers.html">Item</a></li>
    </ul>
  </nav>
</header>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

试试这个

header {
    background-color: #E74C3C;
    height: 5em;
    position: relative;
}

header * {
    padding: 0;
    margin: 0;
}

header a {
    text-decoration: none;
}

header nav, header .title {
    display: block;
    height: 100%;
}

header .title {
    position: absolute;
    top: 0;
    left: 0;
}

header .title h1 {
    position: relative;
    top: 0.70em;
}

header .title a {
    color: #ECF0F1;
    margin: 0 0.5em;
}

header nav {
    position: absolute;
    right: 0;
    top: 0;
    padding: 0 0.5em;
}

header ul {
    list-style-type: none;
    list-style-position: inside;
    position: relative;
    top: 2em;
    right: 0;
}

header ul li {
    display: inline-block;
    padding-right: 0.25em;
}

答案 4 :(得分:0)

更新这个2样式,它应该可以解决问题。

nav ul
{
  padding: 0px;
  margin: 0px;
}

nav li
{
    display:inline-block;
    padding-right:10px;
    padding-left:10px;
    line-height: 80px;
    background-color: green;
}