li 中文本的垂直对齐方式
Vertical alignment of text in li
我最近一直在玩 HTML/CSS,我正在尝试垂直对齐 li
中的文本,使其居中。我已经看到这个问题(或它的一些变体)被问了很多次,所以我提前为提出一个问题道歉,我确定你已经厌倦了看到这个问题,但我无法得到任何建议的解决方案上班。我还试图避免为 li
设置特定的 height
/line-height
,因为我希望这样可以适应屏幕的大小。
这是HTML:
<ul id="nav">
<li><a href="">Home</a></li>
<li><a href="">About</a></li>
<li><a href="">Experience</a></li>
<li><a href="">Contact</a></li>
</ul>
这是CSS:
#nav {
position: absolute;
width: 100%;
height: 100vh;
top: 0;
left: 0;
list-style: none;
padding: 0;
margin: 0;
}
#nav li {
text-align: center;
height: 25%;
width: 100%;
margin: 0 auto;
}
#nav li a {
display: block;
height: 100%;
}
#nav li a:hover {
background: #ccc;
}
我也设置了这个 fiddle 以防你想弄乱它,看看你是否可以让它工作。谢谢!
如果您希望它们彼此相邻,请尝试将您的 li
设为 inline-block
,或者如果您希望它们位于彼此下方,请尝试将它们设为块。确保给 li
元素一个固定的宽度,并将它们的文本对齐方式设置为 centered
.
你可以像这样将#nav li 的行高设置为视口高度的 25%
#nav li {
text-align: center;
height: 25%;
width: 100%;
margin: 0 auto;
line-height: 25vh; /* this is the only thing you need to add */
}
它非常简单和简短,并且可以处理对文本(如字体大小等)或列表的任何更改。无论您在列表中添加或删除了多少项,或者您对#nav 或其列表项的高度做了什么更改,都无关紧要。
见 first working revision of your jsFiddle ;)
在您的 li
上设置 display: table;
display: table-cell;
vertical-align: middle;
在你的 a
最终样式:
#nav li {
display: table;
text-align: center;
height: 25%;
width: 100%;
margin: 0 auto;
}
#nav li a {
display: table-cell;
height: 100%;
vertical-align: middle;
}
在您的 css
中尝试这些更改
#nav li {
text-align: center;
height: 25%;
width: 100%;
margin: 0 auto;
display: table; /* added */
}
#nav li a {
display: table-cell; /* changes from block to table-cell */
vertical-align: middle; /* added */
height: 100%;
}
在此处查看工作示例http://jsfiddle.net/t6ryfqzk/7/
我最近一直在玩 HTML/CSS,我正在尝试垂直对齐 li
中的文本,使其居中。我已经看到这个问题(或它的一些变体)被问了很多次,所以我提前为提出一个问题道歉,我确定你已经厌倦了看到这个问题,但我无法得到任何建议的解决方案上班。我还试图避免为 li
设置特定的 height
/line-height
,因为我希望这样可以适应屏幕的大小。
这是HTML:
<ul id="nav">
<li><a href="">Home</a></li>
<li><a href="">About</a></li>
<li><a href="">Experience</a></li>
<li><a href="">Contact</a></li>
</ul>
这是CSS:
#nav {
position: absolute;
width: 100%;
height: 100vh;
top: 0;
left: 0;
list-style: none;
padding: 0;
margin: 0;
}
#nav li {
text-align: center;
height: 25%;
width: 100%;
margin: 0 auto;
}
#nav li a {
display: block;
height: 100%;
}
#nav li a:hover {
background: #ccc;
}
我也设置了这个 fiddle 以防你想弄乱它,看看你是否可以让它工作。谢谢!
如果您希望它们彼此相邻,请尝试将您的 li
设为 inline-block
,或者如果您希望它们位于彼此下方,请尝试将它们设为块。确保给 li
元素一个固定的宽度,并将它们的文本对齐方式设置为 centered
.
你可以像这样将#nav li 的行高设置为视口高度的 25%
#nav li {
text-align: center;
height: 25%;
width: 100%;
margin: 0 auto;
line-height: 25vh; /* this is the only thing you need to add */
}
它非常简单和简短,并且可以处理对文本(如字体大小等)或列表的任何更改。无论您在列表中添加或删除了多少项,或者您对#nav 或其列表项的高度做了什么更改,都无关紧要。 见 first working revision of your jsFiddle ;)
在您的 li
上设置 display: table;
display: table-cell;
vertical-align: middle;
在你的 a
最终样式:
#nav li {
display: table;
text-align: center;
height: 25%;
width: 100%;
margin: 0 auto;
}
#nav li a {
display: table-cell;
height: 100%;
vertical-align: middle;
}
在您的 css
中尝试这些更改#nav li {
text-align: center;
height: 25%;
width: 100%;
margin: 0 auto;
display: table; /* added */
}
#nav li a {
display: table-cell; /* changes from block to table-cell */
vertical-align: middle; /* added */
height: 100%;
}
在此处查看工作示例http://jsfiddle.net/t6ryfqzk/7/