32

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

不幸的是,第二个按钮显示的文本可能不止一行,因此我无法将line-height其垂直居中。

我最初的解决方案是使用display: table-cell;而不是inline-block,这在 Chrome、Firefox 和 Safari 中解决了问题,但在 Internet Explorer 中没有,所以我想我需要坚持使用 inline-block。

我将如何在57pxx中垂直居中链接文本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>
4

3 回答 3

35

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

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

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

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

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

于 2014-07-10T19:47:18.430 回答
26

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

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/

于 2013-08-28T10:35:37.533 回答
0

找出其他答案,以防有人设计按钮并寻求此页面,可以组合:

  • button设计与display:inline-flex
  • button-content嵌套在其中的divdisplay:inline-block
  • 定义诸如文本装饰覆盖之类的button-text跨度(对于按钮在父元素定义它的页面中没有下划线文本的必要条件 - 特别是在 chrome 和 safari 上)

演示示例

于 2021-09-23T19:44:41.623 回答