@udidu が提供する回答は、あなたの場合に有効です。ただし、画像が中央に表示されない主な理由は、にline-height
適用される css プロパティが原因であることに注意する必要があります<a>
.link
。ここのコードの例http://jsfiddle.net/zSGLy/6/
誤って異なる cssline-height
プロパティを継承してしまった場合は、設定するソリューションをvertical-align:-5px
毎回再確認して再調整する必要があります。
この問題に対処するには、いくつかの方法があります。
第1の方法
画像が本当に必要な場合は、垂直方向の配置を設定して、このように少しハックする必要があります。<span>
これは、ミックスで別の要素を使用する必要があるため、必要がない場合は使用したくない方法の 1 つです。
line-height: 1;
が重要です。ここのフィドルhttp://jsfiddle.net/zSGLy/8/
HTML:
<a href="javascript:void(0)" class="link">
<span><img src="http://energenius.co.uk/dash/img/settingsIcon.png" /></span>
</a>
CSS:
.link {
display: inline-table;
background-color: red;
height: 30px;
/* just to make the problem more obvious */
width: 100px;
text-align: center;
line-height: 30px;
}
.link > span {
height: 100%;
display: table-cell;
vertical-align: middle;
line-height: 1;
}
2番目の方法
コンテンツをプレゼンテーションから分離するという概念 (スタイルシートの目的) については、画像を背景画像として設定することをお勧めします。
例: http://jsfiddle.net/zSGLy/9/
CSS:
.link {
display: inline-block;
background-color: red;
height: 30px;
/* just to make the problem more obvious */
width: 100px;
text-align: center;
/* bg image*/
background-image: url(http://energenius.co.uk/dash/img/settingsIcon.png);
background-repeat: no-repeat;
background-position: center center;
}
HTML:
<a href="javascript:void(0)" class="link"></a>
それが役に立てば幸い。