在 ul li 中垂直居中文本
Posted
技术标签:
【中文标题】在 ul li 中垂直居中文本【英文标题】:Vertically center text in ul a li 【发布时间】:2014-11-15 22:10:37 【问题描述】:所以,显然我似乎无法弄清楚为什么 li 内的文本一直粘在它的顶部......我尝试过使用高度、行高、垂直对齐、显示(表格、 table-cell, inline-block, inline ...) 和所有这些东西,但是我不知道为什么,我看不出它有什么问题...
jsFiddle - http://jsfiddle.net/qdq1jg4g/2/
<header>
<span id="headerTitle">Title</span>
<ul id="headerMenu">
<a href=""><li> Plugin </li></a>
<a href=""><li> how-to </li></a>
<a href=""><li> Docs </li></a>
</ul>
</header>
CSS
#headerMenu
position: absolute;
border: 1px dashed blue;
font-size: 16pt;
right: 15%;
height: 100%;
line-height: 100%;
bottom: 0px;
margin: 0px;
padding: 0px;
#headerMenu a
height: 100%;
line-height: 100%;
#headerMenu a li
border: 1px solid red;
float: left;
list-style: none;
height: 100%;
line-height: 100%;
padding: 0px 20px;
提前谢谢你。
【问题讨论】:
您将a
标签放在li
周围是否有特殊原因?这不是严格有效的 HTML。你能把a
标签放在li
标签里吗?
我这样做的唯一原因是整个li
是一个可点击的链接,而不仅仅是单词本身@MarcAudet
【参考方案1】:
这是使用嵌入li
标签的a
标签的一种方法:
header
background: #eee;
color: #333;
height: 100px;
width: 100%;
top: 0px;
margin: 0px 0px 10px 0px;
font-size: 26pt;
position: relative;
z-index: 100;
transition: all 0.1s;
#headerTitle
position: absolute;
bottom: 15px;
left: 10px;
#headerMenu
position: absolute;
border: 1px dashed blue;
font-size: 16pt;
right: 15%;
height: 100%;
line-height: 1;
bottom: 0px;
margin: 0px;
padding: 0px;
#headerMenu li
float: left;
display: table;
border: 1px solid red;
height: 100%;
margin: 0 20px; /* optional, depends on your layour */
#headerMenu a
display: table-cell;
vertical-align: middle;
border: 1px dashed red;
height: 100%;
padding: 0 20px;
<header>
<span id="headerTitle">Title</span>
<ul id="headerMenu">
<li><a href="plug-in-link">Plugin</a></li>
<li><a href="how-to-link">how-to</a></li>
<li><a href="docs-link">Docs</a></li>
</ul>
</header>
【讨论】:
谢谢!这有点愚蠢,但我没想过增加a
的尺寸,因为我非常“专注”于将其保持在那个地方,以使其按我想要的方式工作......无论如何,工作得很好。谢谢。
这个看起来很简单的布局比看起来要难实现,我试了几次才搞定。顺便说一句,这个问题与构建 3 列页面布局密切相关,其中三列占据最高列的高度。万事如意!以上是关于在 ul li 中垂直居中文本的主要内容,如果未能解决你的问题,请参考以下文章