在 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/

html

<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 中垂直居中文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 <li> 中垂直居中文本而不影响列表项目符号?

CSS:水平和垂直居中文本? [复制]

如何在图像旁边垂直居中文本? [复制]

求ul中的li布局CSS布局,横向垂直都要居中,如何实现?

css如何设置文本在li元素中垂直居中显示

使用 css 在 span 和 li 中垂直居中锚点