2013-10-06 12 views
13

Dlaczego div elementu nadrzędnego ma kilka dodatkowych pikseli u dołu. W jaki sposób mogę usunąć piksele bez sztywnego kodu do głównej wysokości div.Wysokość DIV w oparciu o wysokość obrazu podrzędnego dodaje kilka dodatkowych pikseli na dole.

http://jsfiddle.net/6x8Dm/

HTML

<div class="wrapper"> 
    <div class="column"> 
     <img src="http://www.lorempixel.com/200/200/" /> 
    </div>  
</div> 

CSS

.wrapper { 
    width:200px; 
    margin:0 auto; 
} 
.column { 
    width:100%; 
    background:#cc0000; 
} 

img { 
    width:100%; 
} 

Odpowiedz

26

Ta przestrzeń jest faktycznie wynikiem elementów podrzędnych w czcionkach. Można się go pozbyć na kilka sposobów:

+0

@JoshC Naprawdę interesująca odpowiedź. Sądzę, że ten margines jest tam z powodu tekstu alternatywnego, na wypadek, gdyby brakowało obrazu. Czy masz pojęcie o przyczynie tego dodatkowego piksela? Powód? –

+2

@AdrianFlorescu - nie, odstęp (bez marginesu) jest obecny, ponieważ domyślnie obrazy są jak elementy śródliniowe, a przestrzeń jest zarezerwowana dla elementów podrzędnych (np. G, y, j). – j08691

+2

OMG to działa! : D –

5

Jednym ze sposobów jest poprzez ustawienie display:block na img, powodując jej wypełnienie rodzica.

jsFiddle here - to działa.

img { 
    width:100%; 
    display:block; 
} 

Ewentualnie, jeśli nie podoba takie podejście, można również zmienić wyrównanie w pionie, jak domyślnie jest baseline.

+0

Hm ... fajnie! To jest poprawne! Czy masz pojęcie, dlaczego jest tam ten margines? –

+0

Wyobrażam sobie facetów, kiedy stworzyli tag obrazu. Oni są tacy jak ... "Powinniśmy dodać kilka dodatkowych pikseli pod tym obrazem, jeśli jest on zawinięty w div i nie wyświetla się właściwość display lub float - będzie to creepy :)) muahaha" –

Powiązane problemy