块元素中的垂直对齐文本

48 html css html5 css3

我知道总是询问垂直对齐,但我似乎无法找到这个特定示例的解决方案.我希望文本在元素中居中,而不是元素居中:

HTML:

<ul>
    <li><a href="">I would like this text centered vertically</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

CSS:

li a {
    width: 300px;
    height: 100px;
    margin: auto 0;
    display: block;
    background: red;
}
Run Code Online (Sandbox Code Playgroud)

li a {
    width: 300px;
    height: 100px;
    margin: auto 0;
    display: block;
    background: red;
}
Run Code Online (Sandbox Code Playgroud)
<ul>
    <li><a href="">I would like this text centered vertically</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

这真的没有CSS3属性吗?我愿意添加一个<span>,但我真的不想添加任何更多的标记.

谢谢!

mel*_*iny 82

根据CSS弹性框布局模块,可以声明的a元件作为柔性容器(见图),并使用align-items垂直对齐沿文本交叉轴(它垂直于主轴线).

在此输入图像描述

这就是你需要做的就是

display: flex;
align-items: center;
Run Code Online (Sandbox Code Playgroud)

浏览器支持注意事

display: -webkit-flex;
-webkit-align-items: center;
Run Code Online (Sandbox Code Playgroud)

火狐

设置layout.css.flexbox.enabledtrue.

或者你仍然可以使用

display: -moz-box;
-moz-box-align: center;
Run Code Online (Sandbox Code Playgroud)

只知道这不是css3-flexbox,它不会包装.

IE

有人可以检查IE语法并在此处添加吗?您可以尝试使用Advanced cross-browser flexbox中的语法.

看到这个小提琴(记住要设置layout.css.flexbox.enabledtrue如果你在FF).

  • 小心!这不是跨浏览器!30-50%的用户将通过设计师方式(IE)无意中看到它 (9认同)

eri*_*bae 50

你也可以试试

a {
  height:100px;
  line-height:100px;
}
Run Code Online (Sandbox Code Playgroud)

  • 这不适用于多行文字 (20认同)
  • 问题是有 2 条或更多条线。下一行将会丢失。 (3认同)
  • 也不适用于任何具有动态高度的东西 (2认同)

小智 12

li a {
width: 300px;
height: 100px;
display: table-cell;
vertical-align: middle;
margin: auto 0;
background: red;
Run Code Online (Sandbox Code Playgroud)

}


Jeh*_*Ahn 6

display: grid; place-content: center;

无需保证金。

li a {
    width: 300px;
    height: 100px;
    display: grid;
    place-content: center;
    background: red;
}
Run Code Online (Sandbox Code Playgroud)
<ul>
    <li><a href="">I would like this text centered vertically</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以尝试使用display:inline-block和:after。

的HTML

<ul>
    <li><a href="">I would like this text centered vertically</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

的CSS

li a {
    width: 300px;
    height: 100px;
    margin: auto 0;
    display: inline-block;
    vertical-align: middle;
    background: red;  
}
li a:after {
  content:"";
  display: inline-block;
  width: 1px solid transparent;
  height: 100%;
  vertical-align: middle;
}
Run Code Online (Sandbox Code Playgroud)

请观看演示

  • 该解决方案不支持多行文本,因此比“行高”技巧更有用 (3认同)