我似乎无法将标题导航到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;
答案 0 :(得分:0)
您需要将vertical-align:middle
设置为列表项目本身。我也会直接将它设置为链接以补偿任何列表项填充等。
例如:
nav ul li, nav ul li a{vertical-align:middle;}
这是因为vertical-align基于父元素设置位置,因此您需要将其设置为子元素(与text-align等属性不同,您可以将样式设置为父元素以影响其中的元素。
在W3C vertical-align property guide上查看有关垂直对齐的详情。
答案 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或表格单元格框的垂直对齐方式。
h1
,ul
等元素默认都是block level,所以它不会起作用。虽然您可以将它们重置为内联级别并在中间垂直对齐它们。但出于简单的原因,我建议使用现代flexbox布局,请参阅示例和注释,如下所示。
<强> jsFiddle 强>
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;
答案 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;
}