在内联块中垂直居中文本

时间:2013-08-28 10:28:13

标签: html vertical-alignment centering css

我正在尝试使用样式化的超链接为网站创建一些按钮。我设法让按钮看起来像我想要的,禁止一个小问题。我无法将文本(下面的源代码中的“链接”)设置为垂直居中。

不幸的是,第二个按钮可能会显示多行文字,因此我无法使用line-height垂直居中。

我的初步解决方案是使用display: table-cell;而不是inline-block,并在Chrome,Firefox和Safari中对问题进行排序,但在Internet Explorer中没有,因此我认为我需要坚持使用内联 - 块。

如何在57px x 100px inline-block内垂直居中显示链接文字,并让它迎合多行文字?提前谢谢。

CSS:

.button {
    background-image:url(/images/categorybutton-off.gif);
    color:#000;
    display:inline-block;
    height:57px;
    width:100px;
    font-family:Verdana, Geneva, sans-serif;
    font-size:10px;
    font-weight:bold;
    text-align:center;
    text-decoration:none;
    vertical-align:middle;
}
.button:hover {
    background-image:url(/images/categorybutton-on.gif);
}
.button:before {
    content:"Click Here For\A";
    font-style:italic;
    font-weight:normal !important;
    white-space:pre;
}

HTML:

<a href="/" class="button">Link</a>
<a href="/" class="button">Link<br />More Details</a>

2 个答案:

答案 0 :(得分:31)

非常感谢@avrahamcool,就像一个魅力!

我有一点升级。您可以使用css

替换冗余.Centerer span
.button:before {
  content: '';
  display: inline-block;
  vertical-align: middle;
  height: 100%;
}

在此处查看演示:http://jsfiddle.net/modernweb/bXD2V/

注意:这不适用于“content”属性中的文本。

答案 1 :(得分:19)

用span(中心)包裹文本,然后在它之前写一个空的范围(Centerer)。

<强> HTML:

<a href="..." class="button">
  <span class="Centerer"></span>
  <span class='Centered'>Link</span>
</a>

<强> CSS

.Centered
{
    vertical-align: middle;
    display: inline-block;
}

.Centerer
{
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}

看看这里:http://jsfiddle.net/xVnQ6/