height
とwidth
が200pxのリンクを作成しようとしています。リンクのテキストは、垂直方向と水平方向の中央に配置する必要があります。
これが私のCSSです。
a:link.Kachel {
width: 200px;
height: 200px;
margin: 0 auto;
display: block;
text-align: center;
background: #383838;
display: -webkit-box;
display: -moz-box;
display: box;
-webkit-box-align: center;
-moz-box-align: center;
box-align: center;
}
そして、このHTMLコード:
<tr>
<td>
<a class="Kachel" href="#">Test</a>
</td>
</tr>
テキストは水平方向に中央揃えされますが、垂直方向には中央揃えされません。
テキストを水平方向と垂直方向の両方に中央揃えする方法はありますか?
他のナンセンスをすべて削除し、height
をline-height
に置き換えるだけです
a:link.Kachel{
width: 200px;
line-height: 200px;
display: block;
text-align: center;
background: #383838;
}
jsfiddle: http://jsfiddle.net/6jSFY/
CSS3では、flexboxを追加要素なしで使用してこれを実現できます。
.link {
display: flex;
justify-content: center;
align-items: center;
}
テキストが1行のみの場合、line-height:200px;
を使用できます-200pxはheight
値と同じです。
テキストが複数行にあり、常に同じ数の複数行にある場合は、padding
をline-height
と組み合わせて使用できます。 2行の例:
line-height:20px;
padding-top:80px;
このように、2つの行は合計で40ピクセルを占有し、パディングトップはそれらを完全に中央に配置します。それに応じてheight
を調整する必要があることに注意してください。
複数のリンクがあり、任意の行数がある場合は、それぞれのパディングをfixするためのJavaScriptが必要になります。
追加する小さなポイント。下線を削除すると(text-decoration:none;)、テキストは完全に垂直方向に中央揃えされません。リンクは下線用のスペースを残します。私の知る限り、余分な上部パディングを少し追加する以外は、これをオーバーライドする方法はありません。
たぶんパディングを使用していますか?のような:
padding-top: 50%;