2013-07-28 16 views

答えて

59

イメージ(および一般にインラインブロック要素)は、文字のように扱われます。

このように、それらはベースラインのルールに従います。

通常のテキストでは、この文のように、ベースラインはほとんどの文字の一番下の行です。

しかし、pqjなどの一部の文字には、ベースラインを下回るテールがあります。これらのテールが次の行の文字と衝突するのを防ぐために、ベースラインとボトムラインの間にスペースが確保されています。テキストがない場合でも、

WHATWG's baseline diagramWHATWGからの画像)

そこで、画像がベースラインに整列される。

この図はテキストで使用される異なるラインを示します。幸いなことに、修正は非常に簡単です:

img {vertical-align:bottom} 

これも謎のスペースを削除し、ラインの下に画像を合わせます。

画像が小さい(線の高さよりも小さい)場合は、画像の上に表示される謎の空間が表示されることがあります。これを修正するには、コンテナ要素にline-height:1pxを追加します。

これは私が見た多くの人々がこれと同様の問題について尋ねるのに役立ちます。ブロックレベル要素

img { 
    display: block; 
} 

img変更

+0

完璧な答え....私はこれにも戸惑いました。いいです:) –

+1

@tmanありがとう - 初めの参考回答を書いて、とても緊張しています!より多くの人々がこれについて知る必要があります。 –

+0

ニース。 'line-height:1px'はなぜ機能するのですか?それはハックだから、少し賢明な価値があるのだろうか? –

4

はまた、画像の下のスペースを削除します。

+0

しかし、複数の画像を並べて表示することができません。 –

+1

質問の[demonstration](http://jsfiddle.net/cLETP/)リンクは、 'div'要素にラップされた' img'要素を示しています。 'div'はデフォルトではブロックレベルなので、これは' div' + 'img'の複数のインスタンスが並んで表示されないようにします。イメージがマークアップ内で隣接していた場合、 'display:inline-block'は下のスペースを取り除き、要素を並べて表示します。 – Astrotim

+1

@Astrotim - それは正しくありません。 'display:inline-block'は以下のスペースを削除しません。 – Alohci

0

チェックアウトこのCSS jsfiddle CSS CSSの

div {border:1px solid red;width:100px;line-height:0} 
img {width:100px;} 
関連する問題