2013-07-28 12 views

Odpowiedz

59

Obrazy (i ogólnie elementy bloków śródliniowych) są traktowane jak znak.

Jako takie są one zgodne z zasadą linii bazowej.

W zwykłym tekście linia bazowa to linia znajdująca się u dołu większości liter, na przykład w tym zdaniu.

Ale niektóre litery, takie jak p, q, j itd. Mają ogonki, które spadają poniżej linii podstawowej. Aby zapobiec kolidowaniu tych kolejek z literami w następnej linii, przestrzeń jest zarezerwowana między linią podstawową i dolną.

Ten schemat ilustruje różne linie wykorzystywane przez tekstem:

WHATWG's baseline diagram (obraz z WHATWG)

Tak, obraz jest wyrównany do linii bazowej, nawet jeśli nie ma tekstu. Na szczęście poprawka jest bardzo prosta:

img {vertical-align:bottom} 

ta dostosuje obraz do dolnej linii, również usunięcie przestrzeń tajemnicy.

Uważaj, jeśli Twój obraz jest mały (mniejszy niż wysokość linii), możesz zacząć widzieć przestrzeń tajemnicy pojawiającą się nad obrazem. Aby to naprawić, dodaj element line-height:1px do elementu kontenera.

Mam nadzieję, że pomoże to wielu osobom, które widziałem, pytać o to i podobne problemy!

+0

Doskonała odpowiedź .... Byłem zakłopotany przez to jak-dobrze. NICE :) –

+1

@tman Dzięki - po raz pierwszy piszę odpowiedź referencyjną, więc trochę nerwowy! Więcej osób musi o tym wiedzieć. –

+0

Nice. Dlaczego działa 'line-height: 1px'? To hack, więc czy możemy użyć nieco bardziej rozsądnej wartości? –

4

Zmiana img do elementu blokowych

img { 
    display: block; 
} 

również usunąć miejsca poniżej obrazu.

+0

Ale uniemożliwia to wyświetlanie wielu obrazów obok siebie. –

+1

Link [demonstracja] (http://jsfiddle.net/cLETP/) w pytaniu pokazuje element 'img' zawinięty w element' div'. Domyślnie 'div' jest poziomem bloku, co samo w sobie zapobiegnie wyświetlaniu obok siebie wielu instancji' div' + 'img'. Jeśli obrazy sąsiadowały ze znacznikami, wówczas 'display: inline-block' spowoduje zarówno usunięcie miejsca poniżej, jak i wyświetlenie elementów obok siebie. – Astrotim

+1

@Astrotim - To nie jest poprawne. 'display: inline-block' nie usunie miejsca poniżej. – Alohci

0

Sprawdź tę CSS jsfiddle CSS

div {border:1px solid red;width:100px;line-height:0} 
img {width:100px;} 
Powiązane problemy