726 Stimmen

Bild in div hat zusätzlichen Platz unter dem Bild

Warum im folgender Code die Höhe des div größer ist als die Höhe der img ? Unter dem Bild ist eine Lücke, aber es scheint sich nicht um einen Abstand/Rand zu handeln.

Was ist die Lücke oder der zusätzliche Platz unter dem Bild?

#wrapper {
  border: 1px solid red;
  width:200px;
}
img {
  width:200px;
}

<div id="wrapper">
  <img src="http://i.imgur.com/RECDV24.jpg" />
</div>

Image with a gap or white space under it

7 Stimmen

Hier ist eine gute Lektüre zu diesem Thema: Die seltsame <img>-Lücke in HTML

12voto

Santosh Khalse Punkte 10598

Sie können verschiedene Methoden für dieses Problem verwenden, z. B.

  1. Verwendung von line-height

    #wrapper {  line-height: 0px;  }
  2. Verwendung von display: flex

    #wrapper {  display: flex;         }
    #wrapper {  display: inline-flex;  }
  3. Verwendung von display: block , table , flex y inherit

    #wrapper img {  display: block;    }
    #wrapper img {  display: table;    }
    #wrapper img {  display: flex;     }
    #wrapper img {  display: inherit;  }

5 Stimmen

Bitte empfehlen Sie nicht die sehr schlampige line-height hacken, oder zumindest deutlich machen, warum dies die schlechteste "Lösung" von allen ist: Sobald jemand Text neben das Bild setzt (insbesondere vorformatierten mehrzeiligen Text mit BR-Tags), wird er sich in einer schlechteren Situation wiederfinden, als er zu Beginn hatte.

0 Stimmen

Das hat mir von allen Lösungen am meisten geholfen. Allerdings habe ich meine Wrapping-Div erweitert jetzt über das Thema Bild, zuvor anzeigen Inline-Block in der div behoben. TY

5voto

Abdulla khan Punkte 768

Ich habe line-height:0 und bei mir funktioniert es einwandfrei.

1 Stimmen

Sorry, -1: das bringt die Positionierung des Textes durcheinander, so dass, wenn jemand auch etwas (vor allem mehrzeilige, z.B. mit <BR> ) Text neben dem Bild, so haben sie ein falsch positioniertes, überlappendes/überhängendes Durcheinander.

4voto

Timothy Punkte 1058

Ich habe festgestellt, dass es gut funktioniert, wenn ich display:block; für das Bild und vertical-align:top; für den Text verwende.

.imagebox {
    width:200px;
    float:left;
    height:88px;
    position:relative;
    background-color: #999;
}
.container {
    width:600px;
    height:176px;
    background-color: #666;
    position:relative;
    overflow:hidden;
}
.text {
    color: #000;
    font-size: 11px;
    font-family: robotomeduim, sans-serif;
    vertical-align:top;

}

.imagebox img{ display:block;}

<div class="container">
    <div class="imagebox">
        <img src="http://machdiamonds.com/n69xvs.jpg" /> <span class="text">Image title</span>
    </div>
    <div class="imagebox">
        <img src="http://machdiamonds.com/n69xvs.jpg" /> <span class="text">Image title</span>
    </div>
    <div class="imagebox">
        <img src="http://machdiamonds.com/n69xvs.jpg" /> <span class="text">Image title</span>
    </div>
    <div class="imagebox">
        <img src="http://machdiamonds.com/n69xvs.jpg" /> <span class="text">Image title</span>
    </div>
    <div class="imagebox">
        <img src="http://machdiamonds.com/n69xvs.jpg" /> <span class="text">Image title</span>
    </div>
    <div class="imagebox">
        <img src="http://machdiamonds.com/n69xvs.jpg" /> <span class="text">Image title</span>
    </div>
</div>

oder Sie können den Code bearbeiten und JS FIDDLE

0voto

akhilrawat001 Punkte 101

Sie können auch einstellen overflow: hidden; für den Container, und erhöhen Sie die Höhe des Bildes auf > 100%. height: 100%;

-1voto

TomoMiha Punkte 1006

Ich habe gerade hinzugefügt float:left zu div und es hat funktioniert

17 Stimmen

Dies liegt daran, dass die Einstellung float:left verursacht display:block

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X