CSS按钮 - 垂直居中文本

Dan*_*cer 12 css cross-browser

我有一个Button是一个简单的锚标签,其样式如下 -

.buyBtn{ 
   background:url(../images/buyBtn.png) no-repeat; 
   padding-top:4px; 
   width:97px;     
   height:28px; 
   margin-top:14px;
}
.buyBtn a{
   color:#fff!important; 
   font-weight:normal!important; 
   text-decoration:none;
   padding-left:27px;  
   padding-top:12px; 
   text-shadow:none!important;
}
Run Code Online (Sandbox Code Playgroud)

我在按钮中垂直居中文本时遇到问题,在某些设备中看起来很好,但在其他设备中偏离中心.

任何人都可以推荐一种方法来解决这个或更好的解决方案,以达到相同的效果吗?

干杯

Ari*_*lam 13

HTML:

<div class="buyBtn"><a href="#">Button</a></div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.buyBtn{ 
    background:url(../images/buyBtn.png) no-repeat; 
    width:97px;     
    height:28px; 
    display: table-cell;
    vertical-align: middle;
}

.buyBtn a{
    color:#fff!important; 
    font-weight:normal!important; 
    text-decoration:none;
    padding-left:27px;
    text-shadow:none!important;
}
Run Code Online (Sandbox Code Playgroud)

无需使用padding-topmargin-top垂直对齐.只需使用display: table-cell;vertical-align: middle;.而已.


bch*_*hun 10

使用line-height将其垂直居中.我通常使用与其高度相同的值.

  • IMO 应该是一个可接受的答案。晶莹剔透,无任何瑕疵 (2认同)
  • 仅当您知道高度时才有效。 (2认同)
  • 我将“height”设置为“0”,将“line-height”设置为零,这有效! (2认同)
  • 我使用了 `height: &lt;some_value&gt;` ,然后设置了 `line-height:0` 并且它起作用了。 (2认同)

Amj*_*ous 7

Flexbox 帮我解决了这个问题。假设您有一个 excel 按钮(实际上是一个锚标记)。

HTML

<a class="btn-excel" href="/Export/ExportListToExcel">
    Export To Excel
</a>
Run Code Online (Sandbox Code Playgroud)

CSS

.btn-excel {
    background-color: #32CD32; /*lime green*/
    color: #fff;
    outline: none;
    border-radius: 0.3rem;
    text-decoration: none;
    width: 5rem;
    height: 2.5rem;
    /* Flex rules 'em all */
    display: flex;
    justify-content: center;
    align-items: center;
}
.btn-excel:hover {
    background-color: #808000; /*olive*/
    cursor: pointer;
    text-decoration: none;
}
Run Code Online (Sandbox Code Playgroud)