内联块中的文本垂直居中

新手上路,请多包涵

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

不幸的是,第二个按钮显示的文本可能不止一行,所以我不能使用 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>

原文由 Josh Bowe 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 254
2 个回答

用一个跨度(居中)包裹你的文本,然后像这样在它之前写另一个空跨度(居中)。

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/

原文由 avrahamcool 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

我有一点升级。您可以用 css 替换多余的 .Centerer span

 .button:before {
  content: '';
  display: inline-block;
  vertical-align: middle;
  height: 100%;
}

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

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

原文由 Rafal Gałka 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题